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


93

--command플래그를 사용하여 gdb 세션을 자동화하려고합니다 . 공유 라이브러리의 함수 (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 릴리스 2009.0)
저작권 (C) 2008 Free Software Foundation, Inc.
라이선스 GPLv3 + : GNU GPL 버전 3 이상 
이것은 무료 소프트웨어입니다. 자유롭게 변경하고 재배포 할 수 있습니다.
법률이 허용하는 범위까지 보증은 없습니다. "복사 표시"를 입력합니다.
자세한 내용은 "보증 표시"를 참조하십시오.
이 GDB는 "i586-mandriva-linux-gnu"로 구성되었습니다.
(디버깅 기호가 없음)
"IA__FcFontMatch"함수가 정의되지 않았습니다.
향후 공유 라이브러리로드시 중단 점을 보류 하시겠습니까? (y 또는 [n]) [답변 N; 터미널에서 입력하지 않음]

따라서 결국 중단 점을 설정하지 않습니다. 보류중인 향후 공유 라이브러리로드에 중단 점을 설정하기 위해 기본적으로 "y"로 응답하도록하려면 어떻게해야합니까?

나는 내가 무언가를 할 수 있었다는 것을 기억하지만 무엇을 기억할 수 없다.


답변:


150

나 자신에게 답장을 보내면서 IRC에서 누군가 나에게 준 답을 드리고 싶습니다.

(gdb) apropos pending
actions-추적 점에서 수행 할 작업을 지정합니다.
set breakpoint-중단 점 특정 설정
중단 점 보류 설정-보류 중단 점에 관한 디버거의 동작을 설정합니다.
show breakpoint-중단 점 특정 설정
중단 점 보류 표시-보류 중단 점에 대한 디버거의 동작을 표시합니다.

그래서 set breakpoint 는 트릭을합니다. 그것은 cmds.gdb같이 사용됩니다.

set breakpoint pending on
break <source file name>:<line number>

MinGW를 사용하여 Windows 7에서 디버깅하려는 베이컨을 구했습니다. 기본 설정은 Linux와는 달랐습니다. 감사합니다
bph

어떤 이유로이 오류가 발생 Program received signal SIGILL, Illegal instruction합니다. 파일에서 중단 점을 소싱하고 있는데 set breakpoint pending on일부 중단 점이 프로그램이로드하는 라이브러리에 있기 때문에 있습니다. 중단 점을 수동으로 추가하면 오류가 없습니다. 비슷한 문제에 직면 한 다른 사람이 있습니까?
brokenfoot

@brokenfoot : 여기에 대한 답변에 대한 의견 대신 새로운 최상위 질문에서 질문해야한다고 생각합니다. 그렇게하면 더 많은 사람들이 알아 차릴 것입니다. 또한 시스템에 대한 자세한 정보를 제공해야합니다.
Shlomi 물고기

11

OT : 터미널에서 Caja를 한 줄로 디버그하는 것은 다음과 같습니다.

gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync

2
당신이 '예'스위치를 찾았어요 어디? 나는 문서에서이 매개 변수에 대한 참조를 찾을 수 없습니다 (하지만 :) 작동)
게아 로이드 머피

-ex나를 위해 일하지 않았다. : 내가 가진 tmp 파일 및 호출 명령을 넣어했다gdb -x /tmp/gdb.commands myexecutible
제이슨 무어

5

기호가 없습니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.