كيفية تعيين نقاط التوقف في المكتبات المشتركة المستقبلية باستخدام علامة الأمر

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

  •  01-07-2019
  •  | 
  •  

سؤال

أحاول أتمتة جلسة gdb باستخدام --command علَم.أحاول تعيين نقطة توقف على وظيفة في مكتبة مشتركة (ما يعادل Unix لـ DLL).يبدو 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