程序接收信号SIGSEGV,分段故障 . 0x08049795 in execute_jobs()当前语言:auto;目前asm
(gdb)信息符号0x08049795 execute_jobs 22 in section .text
(gdb)ptype 0x08049795 type = int
如何获取发生错误的行号?
您的二进制文件未编译调试信息 . 重建至少 -g (或 -ggdb ,或 -ggdb -g3 ,见GCC manual . )
-g
-ggdb
-ggdb -g3
GDB输出的确切行:
(gdb) info symbol 0x08049795 execute_jobs + 22 in section .text
表示地址 0x08049795 处的指令,即从函数 execute_jobs 开始的22个字节,生成了分段错误 .
0x08049795
execute_jobs
(gdb) ptype 0x08049795 type = int
在这里,您要求输入整数类型,GDB很乐意回复 . 做
(gdb) x/10i 0x08049795
要么
(gdb) disassemble execute_jobs
看实际指示 .
gdb命令“bt”将显示返回跟踪 . 除非你已经破坏了堆栈,否则这应该显示导致segfault的函数调用序列 . 要获得更有意义的信息,请确保通过在gcc / g命令行中包含-g来编译包含调试信息的程序 .
2 回答
您的二进制文件未编译调试信息 . 重建至少
-g
(或-ggdb
,或-ggdb -g3
,见GCC manual . )GDB输出的确切行:
表示地址
0x08049795
处的指令,即从函数execute_jobs
开始的22个字节,生成了分段错误 .在这里,您要求输入整数类型,GDB很乐意回复 . 做
要么
看实际指示 .
gdb命令“bt”将显示返回跟踪 . 除非你已经破坏了堆栈,否则这应该显示导致segfault的函数调用序列 . 要获得更有意义的信息,请确保通过在gcc / g命令行中包含-g来编译包含调试信息的程序 .