forked from OSchip/llvm-project
44 lines
1.6 KiB
Plaintext
44 lines
1.6 KiB
Plaintext
|
-*- rst -*-
|
||
|
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
|
||
|
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.
|
||
|
|
||
|
For example::
|
||
|
|
||
|
define i32 @f1(i32 %i) nounwind ssp {
|
||
|
; DEBUGGER: break f1
|
||
|
; DEBUGGER: r
|
||
|
; DEBUGGER: p i
|
||
|
; CHECK: $1 = 42
|
||
|
entry:
|
||
|
}
|
||
|
|
||
|
is a testcase where the debugger is asked to break at function 'f1' and
|
||
|
print value of argument 'i'. The expected value of 'i' is 42 in this case.
|
||
|
|
||
|
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.
|