In case you haven't looked at this yet, lldb has an option to skip the function prologue when setting function breakpoints. The setting is configurable via 'settings set target.skip-prologue false|true'. The default is true.
It looks like you have some debug info for libc.so since you are able to resolve some line numbers. My guess is it's getting this prologue offset information from the DWARF info. Matt On 2013-06-14, at 7:23 PM, Mike Sartain <[email protected]<mailto:[email protected]>> wrote: lldb looks like it's adding some offset for the breakpoint command? The disassemble command looks like it works fine, but the breakpoint command is using an address fairly far into printf in this case. Before I head off to investigate, does anyone have any idea what might be going on here or suggestions on where to start? Thanks. -Mike (lldb) disassemble -n printf libc.so.6`__printf at printf.c:30: 0x7f961e2a2840: subq $216, %rsp libc.so.6`__printf + 7 at printf.c:30: 0x7f961e2a2847: testb %al, %al 0x7f961e2a2849: movq %rsi, 40(%rsp) 0x7f961e2a284e: movq %rdx, 48(%rsp) 0x7f961e2a2853: movq %rcx, 56(%rsp) 0x7f961e2a2858: movq %r8, 64(%rsp) 0x7f961e2a285d: movq %r9, 72(%rsp) 0x7f961e2a2862: je 0x7f961e2a289b ; __printf + 91 at printf.c:34 0x7f961e2a2864: movaps %xmm0, 80(%rsp) <=============== breakpoint gets set here 0x7f961e2a2869: movaps %xmm1, 96(%rsp) 0x7f961e2a286e: movaps %xmm2, 112(%rsp) 0x7f961e2a2873: movaps %xmm3, 128(%rsp) 0x7f961e2a287b: movaps %xmm4, 144(%rsp) 0x7f961e2a2883: movaps %xmm5, 160(%rsp) 0x7f961e2a288b: movaps %xmm6, 176(%rsp) 0x7f961e2a2893: movaps %xmm7, 192(%rsp) 0x7f961e2a289b: leaq 224(%rsp), %rax 0x7f961e2a28a3: movq %rdi, %rsi 0x7f961e2a28a6: leaq 8(%rsp), %rdx 0x7f961e2a28ab: movl $8, 8(%rsp) 0x7f961e2a28b3: movl $48, 12(%rsp) 0x7f961e2a28bb: movq %rax, 16(%rsp) 0x7f961e2a28c0: leaq 32(%rsp), %rax 0x7f961e2a28c5: movq %rax, 24(%rsp) 0x7f961e2a28ca: movq 3556935(%rip), %rax 0x7f961e2a28d1: movq (%rax), %rdi 0x7f961e2a28d4: callq 0x7f961e2979c0 ; _IO_vfprintf_internal at vfprintf.c:211 0x7f961e2a28d9: addq $216, %rsp 0x7f961e2a28e0: ret (lldb) b printf Breakpoint 2: where = libc.so.6`__printf + 36 at printf.c:30, address = 0x00007f961e2a2864 (lldb) breakpoint set -n printf Breakpoint 3: where = libc.so.6`__printf + 36 at printf.c:30, address = 0x00007f961e2a2864 (lldb) target modules lookup -s printf -v 1 symbols match 'printf' in /home/mikesart/data/src/blah2/build/blah: Address: 0x0000000000000000 (0x0000000000000000) Summary: 0x0000000000000000 0x0000000000000000 2 symbols match 'printf' in /lib/x86_64-linux-gnu/libc.so.6: Address: libc.so.6[0x0000000000053840] (libc.so.6..text + 215200) Summary: libc.so.6`__printf at printf.c:30 Module: file = "/lib/x86_64-linux-gnu/libc.so.6", arch = "x86_64" CompileUnit: id = {0x0009273a}, file = "/build/buildd/eglibc-2.15/stdio-common/printf.c", language = "ISO C:1989" Function: id = {0x0009367e}, name = "__printf", range = [0x00007f961e2a2840-0x00007f961e2a28e1) FuncType: id = {0x0009367e}, decl = printf.c:29, clang_type = "int (const char *)" Blocks: id = {0x0009367e}, range = [0x7f961e2a2840-0x7f961e2a28e1) LineEntry: [0x00007f961e2a2840-0x00007f961e2a2864): /build/buildd/eglibc-2.15/stdio-common/printf.c:30 Variable: id = {0x000936a3}, name = "format", type= "const char *", location = rdi, decl = printf.c:29 Variable: id = {0x000936b3}, name = "arg", type= "va_list", location = DW_OP_fbreg(-216), decl = printf.c:31 Variable: id = {0x000936c2}, name = "done", type= "int", location = rax, decl = printf.c:32 Address: libc.so.6[0x0000000000053840] (libc-2.15.so..text + 215200) Summary: libc.so.6`__printf at printf.c:30 Module: file = "/lib/x86_64-linux-gnu/libc.so.6", arch = "x86_64" CompileUnit: id = {0x0009273a}, file = "/build/buildd/eglibc-2.15/stdio-common/printf.c", language = "ISO C:1989" Function: id = {0x0009367e}, name = "__printf", range = [0x00007f961e2a2840-0x00007f961e2a28e1) FuncType: id = {0x0009367e}, decl = printf.c:29, clang_type = "int (const char *)" Blocks: id = {0x0009367e}, range = [0x7f961e2a2840-0x7f961e2a28e1) LineEntry: [0x00007f961e2a2840-0x00007f961e2a2864): /build/buildd/eglibc-2.15/stdio-common/printf.c:30 Symbol: id = {0x00001ebc}, range = [0x0000000000053840-0x00000000000538e1), name="_IO_printf" Variable: id = {0x000936a3}, name = "format", type= "const char *", location = rdi, decl = printf.c:29 Variable: id = {0x000936b3}, name = "arg", type= "va_list", location = DW_OP_fbreg(-216), decl = printf.c:31 Variable: id = {0x000936c2}, name = "done", type= "int", location = rax, decl = printf.c:32 gdb works as expected: (gdb) disassemble printf Dump of assembler code for function __printf: 0x00007ffff7054840 <+0>: sub rsp,0xd8 0x00007ffff7054847: test al,al 0x00007ffff7054849: mov QWORD PTR [rsp+0x28],rsi 0x00007ffff705484e: mov QWORD PTR [rsp+0x30],rdx 0x00007ffff7054853: mov QWORD PTR [rsp+0x38],rcx 0x00007ffff7054858: mov QWORD PTR [rsp+0x40],r8 0x00007ffff705485d: mov QWORD PTR [rsp+0x48],r9 0x00007ffff7054862: je 0x7ffff705489b 0x00007ffff7054864: movaps XMMWORD PTR [rsp+0x50],xmm0 0x00007ffff7054869: movaps XMMWORD PTR [rsp+0x60],xmm1 0x00007ffff705486e: movaps XMMWORD PTR [rsp+0x70],xmm2 0x00007ffff7054873: movaps XMMWORD PTR [rsp+0x80],xmm3 0x00007ffff705487b: movaps XMMWORD PTR [rsp+0x90],xmm4 0x00007ffff7054883: movaps XMMWORD PTR [rsp+0xa0],xmm5 0x00007ffff705488b: movaps XMMWORD PTR [rsp+0xb0],xmm6 0x00007ffff7054893: movaps XMMWORD PTR [rsp+0xc0],xmm7 0x00007ffff705489b: lea rax,[rsp+0xe0] 0x00007ffff70548a3: mov rsi,rdi 0x00007ffff70548a6: lea rdx,[rsp+0x8] 0x00007ffff70548ab: mov DWORD PTR [rsp+0x8],0x8 0x00007ffff70548b3: mov DWORD PTR [rsp+0xc],0x30 0x00007ffff70548bb: mov QWORD PTR [rsp+0x10],rax 0x00007ffff70548c0: lea rax,[rsp+0x20] 0x00007ffff70548c5: mov QWORD PTR [rsp+0x18],rax 0x00007ffff70548ca: mov rax,QWORD PTR [rip+0x364647] # 0x7ffff73b8f18 0x00007ffff70548d1: mov rdi,QWORD PTR [rax] 0x00007ffff70548d4: call 0x7ffff70499c0 <_IO_vfprintf_internal at vfprintf.c:211> 0x00007ffff70548d9: add rsp,0xd8 0x00007ffff70548e0: ret End of assembler dump. (gdb) b printf Breakpoint 2 at 0x7ffff7054840: file printf.c, line 30. _______________________________________________ lldb-dev mailing list [email protected]<mailto:[email protected]> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev _______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
