trong Linux và Mac OS X Tôi có thể sử dụng stepi và nexti để gỡ lỗi một ứng dụng mà không cần gỡ lỗi thông tin.Gỡ lỗi các thư viện đã tháo rời với gdb
Trên Mac OS X gdb hiển thị các hàm được gọi bên trong thư viện, mặc dù đôi khi tiến hành một số lệnh lắp ráp trong mỗi lệnh stepi.
Trên Linux, khi tôi bước vào thư viện động, gdb bị mất. Ví dụ, với puts() có ba hướng dẫn lắp ráp bên trong puts(), khi gdb đạt đến bước nhảy ở 0x080482bf, nó không thành công với thông báo "Không có hàm nào chứa bộ đếm chương trình cho khung đã chọn".
0x080482ba in [email protected]()
(gdb) disassemble
Dump of assembler code for function [email protected]:
0x080482b4 <[email protected]+0>: jmp *0x8049580
0x080482ba <[email protected]+6>: push $0x10
0x080482bf <[email protected]+11>: jmp 0x8048284 <_init+48>
End of assembler dump.
(gdb) stepi
0x080482bf in [email protected]()
(gdb) stepi
0x08048284 in ??()
(gdb) disassemble
No function contains program counter for selected frame.
Bạn có biết cách gỡ lỗi các cuộc gọi thư viện này với gdb không.
Phiên bản gdb nào? –
Ngoài ra, điều gì xảy ra khi bạn sử dụng stepi trên Linux? Bạn nói rằng bạn không thể bước qua các hướng dẫn ở tất cả, nhưng bạn không mô tả những gì thực sự xảy ra. Bạn có thể đăng một phiên mẫu không? –
Cảm ơn bạn, tôi đang sử dụng Slackware 13.0 với gdb 6.8 được cài đặt trước của nó. Tôi đã làm rõ điều gì xảy ra. – Freeman