How to set breakpoints on future shared libraries with a command flag

后端 未结 3 1808
攒了一身酷
攒了一身酷 2020-11-29 16:16

I\'m trying to automate a gdb session using the --command flag. I\'m trying to set a breakpoint on a function in a shared library (the Unix equivalent of a DLL)

相关标签:
3条回答
  • 2020-11-29 16:32

    With no symbols.

    objdump -t /lib/libacl.so
    SYMBOL TABLE:
    no symbols
    objdump -T /lib/libacl.so
    ...
    00002bd0 g    DF .text  000000d0  ACL_1.0     acl_delete_entry
    ...
    
    
    (gdb) break 0x0002bd0 
    
    (gdb) x/20i acl_delete_entry
    0x2bd0 <acl_delete_entry>:      stwu    r1,-32(r1)
    0x2bd4 <acl_delete_entry+4>:    mflr    r0
    0x2bd8 <acl_delete_entry+8>:    stw     r29,20(r1)
    0x2bdc <acl_delete_entry+12>:   stw     r30,24(r1)
    0x2be0 <acl_delete_entry+16>:   mr      r29,r4
    0x2be4 <acl_delete_entry+20>:   li      r4,28972
    
    0 讨论(0)
  • 2020-11-29 16:39

    Replying to myself, I'd like to give the answer that someone gave me on IRC:

    (gdb) apropos pending
    actions -- Specify the actions to be taken at a tracepoint
    set breakpoint -- Breakpoint specific settings
    set breakpoint pending -- Set debugger's behavior regarding pending breakpoints
    show breakpoint -- Breakpoint specific settings
    show breakpoint pending -- Show debugger's behavior regarding pending breakpoints
    

    And so set breakpoint pending on does the trick; it is used in cmds.gdb like e.g.

    set breakpoint pending on
    break <source file name>:<line number>
    
    0 讨论(0)
  • 2020-11-29 16:53

    OT: In terminal it would look like this to debug Caja in one line:

    gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync
    
    0 讨论(0)
提交回复
热议问题