Sau khi tải tệp thi hành vào gdb, làm cách nào để ngắt tại điểm nhập, trước khi lệnh đầu tiên được thực thi?
Bạn có thể tìm thấy những gì các chức năng này được gọi là trước int main()
với set backtrace past-main on
và sau khi tìm thấy họ thiết lập một breakpoint vào chúng và khởi động lại chương trình của bạn:
>gdb -q main
Reading symbols from /home/main...done.
(gdb) set backtrace past-main on
(gdb) b main
Breakpoint 1 at 0x40058a: file main.cpp, line 25.
(gdb) r
Starting program: /home/main
Breakpoint 1, main() at main.cpp:25
25 a();
(gdb) bt
#0 main() at main.cpp:25
#1 0x0000003a1d81ed1d in __libc_start_main() from /lib64/libc.so.6
#2 0x0000000000400499 in _start()
(gdb) b _start
Breakpoint 2 at 0x400470
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/main
Breakpoint 2, 0x0000000000400470 in _start()
Nguồn
2014-04-18 08:21:06
Đối với 'lldb', xem: [? Làm thế nào để ngăn chặn chương trình gỡ rối ngay sau khi thực hiện] (http://reverseengineering.stackexchange.com/q/9583/12021) – kenorb