명령 플래그를 사용하여 향후 공유 라이브러리에 중단점을 설정하는 방법

StackOverflow https://stackoverflow.com/questions/100444

  •  01-07-2019
  •  | 
  •  

문제

다음을 사용하여 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top