명령 플래그를 사용하여 향후 공유 라이브러리에 중단점을 설정하는 방법
문제
다음을 사용하여 gdb 세션을 자동화하려고 합니다. --command
깃발.공유 라이브러리(DLL과 동등한 Unix)의 함수에 중단점을 설정하려고 합니다.내 cmds.gdb는 다음과 같습니다.
set args /home/shlomi/conf/bugs/kde/font-break.txt
b IA__FcFontMatch
r
그러나 다음과 같은 결과가 나타납니다.
shlomi:~/progs/bugs-external/kde/font-breaking$ gdb --command=cmds.gdb... GNU gdb 6.8-2mdv2009.0 (Mandriva Linux release 2009.0) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i586-mandriva-linux-gnu"... (no debugging symbols found) Function "IA__FcFontMatch" not defined. Make breakpoint pending on future shared library load? (y or [n]) [answered N; input not from terminal]
그래서 결국 중단점을 설정하지 않습니다.보류 중인 향후 공유 라이브러리 로드에 중단점을 설정하기 위해 "y"로 응답하도록 기본 설정하려면 어떻게 해야 합니까?
나는 무엇인가를 할 수 있었다는 것을 기억하지만 무엇을 기억할 수는 없습니다.
해결책
나 자신에게 답장을 보내면서 누군가 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
그래서 중단점 설정 보류 중 트릭을 수행합니다.그것은에서 사용됩니다 cmds.gdb
예를 들어
set breakpoint pending on
break <source file name>:<line number>
다른 팁
구약:터미널에서 Caja를 한 줄로 디버그하는 것은 다음과 같습니다:
gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync
기호가 없습니다.
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
제휴하지 않습니다 StackOverflow