2012-06-30 2 views
0

У меня есть список точек останова, которые я хочу добавлять каждый раз при отладке определенной программы. Я создал файл, содержащий точки останова и используемый gdb -x «файл», но все точки останова, ожидающие загрузки будущей общей библиотеки, не были добавлены. Есть ли способ решить эту проблему?gdb -x общая точка останова библиотеки

ответ

4

В вашем скрипте установлены точки останова в разделяемых библиотеках как ожидающие, а когда загружаются разделяемые библиотеки, ваши контрольные точки будут правильно установлены.

(gdb) help set breakpoint pending 
Set debugger's behavior regarding pending breakpoints. 
If on, an unrecognized breakpoint location will cause gdb to create a 
pending breakpoint. If off, an unrecognized breakpoint location results in 
an error. If auto, an unrecognized breakpoint location results in a 
user-query to see if a pending breakpoint should be created. 

И это пример сценария (предположим print_in_lib в в общей библиотеке, которая будет загружаться с dlopen):

file main 
set breakpoint pending on 
b print_in_lib 
r 

И это его выход:

host: srv2-x64rh5-01, OS: Linux 2.6.18-238.el5>gdb -q 
Function "print_in_lib" not defined. 
Breakpoint 1 (print_in_lib) pending. 
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000 
thousands: 1 
print_debug: 0 

Breakpoint 1, print_in_lib (print_debug=0) at my_lib.cpp:7 
7   if (print_debug) { 
(gdb) bt 
#0 print_in_lib (print_debug=0) at my_lib.cpp:7 
#1 0x00000000004008ab in main (argc=<value optimized out>, argv=<value optimized out>) at main.cpp:37 
(gdb) 
Смежные вопросы