llxmars的个人空间 https://blog.eetop.cn/193015 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

通过修改gdb源码忽略bochs调试时的"Signal 0"信号[转]

已有 2884 次阅读| 2011-2-8 10:45

在调试linux0.11的过程中,出现缺页中断,具体信息是
program received signal 0, Signale 0.
0x0000a0ec in page_fault().
这给调试带来很大的麻烦




关于这个问题,有个网友说了个方法:


忽略信号-“signal 0”


我也出现了这样的问题,不过现在解决了。
1)进入linux-gdb-rh9/ ,运行.run
2)
进入linux-gdb-rh9/ ,cd linux 进入linux目录
3)运行 gdb tools/system
错误的原因可能是 gdb tools/system 不是在linux-gdb-rh9目录下





我用一段时间研究gdb的源码,发现可以通过修改gdb源码来解决这个问题:
我修改的源码是"gdb-6.6",下载压缩包后解压(我解压到目录/opt/gdbdebug下),在目录/opt/gdbdebug下会有个文件夹"gdb-6.6",打开文件"/opt/gdbdebug/gdb-6.6/gdb/infrun.c",在3387行插入如下代码:



//开始
define BOCHDB
//如果gdb需要忽略signal 0,就定义宏BOCHDB,否则将些行释掉恢复原来的样子
#ifdef BOCHDB
//如果定义了BOCHDB就检查信号是否为0 (signal 0)if(0==atoi (*argv))
{
sigs[0] = 1;//如果是信号0,置位sigs[0],使SET_SIGS和UNSET_SIGS对"signal 0"的设置生效
goto igocontinue;
//然后跳过函数"enum target_signal target_signal_from_command (int num)"的检查
//必须跳过,否则发生异常
}
#endif
//结束





在"sigfirst = siglast = (int)target_signal_from_command (atoi (*argv));"下(3389行)插入代码


//开始
igocontinue:
//结束



之后文件从3379行到3398行的内容像下面的样子:


else if (digits > 0)
{
/* It is numeric.
The numeric signal refers to our own
internal signal numbering from target.h, not to host/target
signal
number.
This is a feature; users really should be
using symbolic names anyway, and the common ones like
SIGHUP, SIGINT, SIGALRM, etc. will work right anyway.
*/
#define BOCHDB
#ifdef BOCHDB
if(0==atoi (*argv))
{
sigs[0] = 1;
goto igocontinue;
}
#endif
sigfirst = siglast = (int)
target_signal_from_command (atoi (*argv));
//检查要设置的信号是否为1-15
igocontinue:
  if ((*argv)[digits] == '-')


然后编译:make.
在调试的时候,使用命令"handle 0 nostop noprint"使gdb忽略signal 0.这样就不会出现"Program received signal 0, Signal 0"了

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 2

    评论
  • 974

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-23 22:21 , Processed in 0.014698 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部