使用gdbserver和gdb调试目标板上应用程序

skymelai 2016-08-10 05:42:35
问题:设置断点后执行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;
}
...全文
670 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
skymelai 2016-08-15
  • 打赏
  • 举报
回复
还是自己解决了,是因为在交叉编译gdb的时候./config不正确导致的。
skymelai 2016-08-11
  • 打赏
  • 举报
回复
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; } 断点在11行,continue和step都表示执行11行,直接就异常了,11行的打印也没有程序就显示: Program terminated with signal SIGSEGV, Segmentation fault. The program no longer exists.
fly 100% 2016-08-11
  • 打赏
  • 举报
回复
单步执行看看在哪里出错的

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧