<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 22, 2021 at 9:42 AM Jim Ingham <<a href="mailto:jingham@apple.com">jingham@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If you are just loading an object file and the looking at the line table or something like that, would a UnitTest be more suitable?<br></blockquote><div><br>Maybe, though for what it's worth, this isn't an issue with the line table (well, not the .debug_line contents) as such - this is testing a change to .debug_info - specifically, the use of DW_AT_ranges on a DW_TAG_subprogram. But it manifested as breakpoints not having source information. I don't know a great deal about how the line table ended up interacting with the address ranges specified on the DW_TAG_subprogram, but it did in some way.<br><br>Not sure if that is or isn't especially amenable to unit testing given the LLDB architecture of these components.<br><br>- Dave<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Jim<br>
<br>
<br>
> On Jan 22, 2021, at 5:37 AM, Pavel Labath <<a href="mailto:pavel@labath.sk" target="_blank">pavel@labath.sk</a>> wrote:<br>
> <br>
> On 19/01/2021 23:23, David Blaikie wrote:<br>
>> On Tue, Jan 19, 2021 at 1:12 AM Pavel Labath <<a href="mailto:pavel@labath.sk" target="_blank">pavel@labath.sk</a>> wrote:<br>
>> Yeah - I have mixed feelings about debugger testing here - it is nice<br>
>> to have end-to-end tests which makes for handy debugger testing<br>
>> (though I guess in theory, debuginfo-tests is the place for<br>
>> intentional end-to-end testing), though also being able to test<br>
>> different features (DWARF version, split DWARF, dsym V object<br>
>> debugging, etc) when they're written as end-to-end tests.<br>
> <br>
> Yeah, it would be nice if there was a clearer separation between the two categories. The current setup has evolved organically, as the end-to-end API tests used to be the only kinds of tests.<br>
> <br>
> <br>
>> Can we write non-end-to-end API tests, then?<br>
> <br>
> Kind of. There is no fundamental reason why one couldn't run llvm-mc or whatever as a part of an API test. The main issue is that we don't have the infrastructure for that set up right now. I think the reason for that is that once you start dealing with "incomplete" executables which cannot be run on the host platform, the usefulness of interactivity goes down sharply. It is hard for such a test to do something other than load up some executable and query its state. This is a perfect use case for a shell test.<br>
> <br>
> There are exceptions though. For example we have a collection of "API" tests which test the gdb-remote communication layer, by mocking one end of the connection. Such tests are necessarily interactive, which is why they ended up in the API category, but they are definitely not end-to-end tests, and they either don't use any executables, or just use a static yaml2objed executable. This is why our API tests have the ability to run yaml2obj and one could add other llvm tools in a similar fashion.<br>
> <br>
> Another aspect of end-to-endness is being able to test a specific component of lldb, instead of just the debugger as a whole. Here the API tests cannot help because the "API" is the lldb public API. However, there are also various tricks you can do by using the low-level (debugging) commands (like the "image lookup" thing I mentioned) to interact with the lower debugger layers in some manner.<br>
> <br>
> <br>
> pl<br>
<br>
</blockquote></div></div>