当我使用gdb附加一个挂起的进程时,得到以下信息。我怎么知道关键点在哪里?地址"0x000000000041f828"处是什么?
提前感谢,
(gdb) where
#0 0x00002b2a5b2c379a in sigsuspend () from /lib64/libc.so.6
#1 0x000000000041e9fe in ?? ()
#2 0x000000000041fd9b in ?? ()
#3 0x000000000041f7d9 in ?? ()
#4 0x000000000041f828 in ?? ()
#5 0x000000000041f828 in ?? ()
#6 0x000000000041f828 in ?? ()
#7 0x000000000041f828 in ?? ()
#8 0x000000000041f828 in ?? ()
#9 0x000000000041f828 in ?? ()
#10 0x000000000041f828 in ?? ()
#11 0x000000000041f828 in ?? ()
#12 0x000000000041f828 in ?? ()
#13 0x000000000041f828 in ?? ()
#14 0x000000000041f828 in ?? ()
#15 0x000000000041f828 in ?? ()
#16 0x000000000041f828 in ?? ()
#17 0x0000000000403bc5 in ?? ()
#18 0x0000000000405f93 in ?? ()
#19 0x00002b2a5b2b0994 in __libc_start_main () from /lib64/libc.so.6
#20 0x0000000000403729 in ?? ()
当我使用gdb附加一个挂起的进程时,得到下面的info.
您得到的输出有两个可能的原因:
- 您附加了进程而没有指定正在运行的可执行文件,或者
- 你的二进制文件被完全剥离。
对于情形1,不要这样做:
gdb
(gdb) attach 1234
这样做:
gdb -p 1234
或:
gdb /path/to/binary 1234
或:
gdb /path/to/binary
(gdb) attach 1234
对于情形2,不要完全剥离二进制文件,因为这会使调试变得不可能。如果您没有将其作为单独的构建步骤,请在链接行中查找"stray"-s
或-Wl,-s
,并将其删除。