使用gdbserver和gdb调试目标板上应用程序
问题:设置断点后执行continue都会打印“Program received signal SIGSEGV, Segmentation fault.”,继续continue好像目标板上程序就异常结束了,第1次断点后的代码都没有执行
使用gdbserver和gdb调试目标板上应用程序,设置断点然后continue 宿主机上gdb就会打印:
(gdb) break 11
Breakpoint 1 at 0x83e4: file main.c, line 11.
(gdb)
Note: breakpoint 1 also set at pc 0x83e4.
Breakpoint 2 at 0x83e4: file main.c, line 11.
(gdb) continue
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
目标板上会显示我的程序打印:(这个断点好像是设置成功的,这3行打印是正确的)
test winGDB1
test winGDB2
test winGDB3
这时目标板上的程序还未退出,如果继续cotinue:(断点处及后面的代码没有执行,好像异常退出了)
(gdb) continue
Continuing.
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
目标板上继续打印:
Child terminated with signal = 0xb (SIGSEGV)
GDBserver exiting
下面是main.c的代码:
#include <stdio.h>
//#include <stdlib.h>
int main(int argc, char** argv)
{
int a = 0;
printf("test winGDB1\n");//8行
printf("test winGDB2\n");//9行
printf("test winGDB3\n");//10行
printf("test winGDB4\n"); //11行
return 0;
}