2013-09-07 02:10:42 +08:00
|
|
|
-*- rst -*-
|
2010-09-14 06:47:46 +08:00
|
|
|
This is a collection of tests to check debugging information generated by
|
|
|
|
compiler. This test suite can be checked out inside clang/test folder. This
|
2019-11-01 00:51:53 +08:00
|
|
|
will enable 'make test' for clang to pick up these tests.
|
|
|
|
|
|
|
|
Some tests (in the 'llgdb-tests' directory) are written with debugger
|
|
|
|
commands and checks for the intended debugger output in the source file,
|
|
|
|
using DEBUGGER: and CHECK: as prefixes respectively.
|
2010-09-14 06:47:46 +08:00
|
|
|
|
2013-09-07 02:10:42 +08:00
|
|
|
For example::
|
2010-09-14 06:47:46 +08:00
|
|
|
|
2013-09-07 02:10:42 +08:00
|
|
|
define i32 @f1(i32 %i) nounwind ssp {
|
|
|
|
; DEBUGGER: break f1
|
|
|
|
; DEBUGGER: r
|
|
|
|
; DEBUGGER: p i
|
|
|
|
; CHECK: $1 = 42
|
|
|
|
entry:
|
|
|
|
}
|
2010-09-14 06:47:46 +08:00
|
|
|
|
2013-09-07 02:10:42 +08:00
|
|
|
is a testcase where the debugger is asked to break at function 'f1' and
|
2010-09-14 06:47:46 +08:00
|
|
|
print value of argument 'i'. The expected value of 'i' is 42 in this case.
|
2019-11-01 00:51:53 +08:00
|
|
|
|
|
|
|
Other tests are written for use with the 'Dexter' tool (in the 'dexter-tests'
|
|
|
|
and 'dexter' directories respectively). These use a domain specific language
|
|
|
|
in comments to describe the intended debugger experience in a more abstract
|
|
|
|
way than debugger commands. This allows for testing integration across
|
|
|
|
multiple debuggers from one input language.
|
|
|
|
|
|
|
|
For example::
|
|
|
|
|
|
|
|
void __attribute__((noinline, optnone)) bar(int *test) {}
|
|
|
|
int main() {
|
|
|
|
int test;
|
|
|
|
test = 23;
|
|
|
|
bar(&test); // DexLabel('before_bar')
|
|
|
|
return test; // DexLabel('after_bar')
|
|
|
|
}
|
|
|
|
|
|
|
|
// DexExpectWatchValue('test', '23', on_line='before_bar')
|
|
|
|
// DexExpectWatchValue('test', '23', on_line='after_bar')
|
|
|
|
|
|
|
|
Labels two lines with the names 'before_bar' and 'after_bar', and records that
|
|
|
|
the 'test' variable is expected to have the value 23 on both of them.
|