关于signal SIGILL的一个问题

荃子 2010-11-29 01:08:46
运行程序,调试GDB, 出现的错误提示是Program terminated with signal SIGILL, Illegal instruction.每次都是在申请内存段的时候遇到SIGILL错误,很奇怪,不知道是什么原因,请问能否提供一些有关SIGILL错的提示信息?先谢谢了:)
...全文
2686 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
荃子 2010-12-01
  • 打赏
  • 举报
回复
memset(log,0x00,256)出错的原因在于品其后拼接log名称出现错误,应该算是一个隐藏的不深的BUG,只要在编译的时候将所有的warning去除了,就不会引发该错。
ayw215 2010-11-29
  • 打赏
  • 举报
回复
SIGILL 信号是cpu在发现非法指令之后发出一个异常,然后由负责处理该异常的内核的ISR对含有这个非法指令的进程发出的。程序收到这个信号,一般就是报 告 illegal instruction 错误信息。

可执行程序含有非法指令的原因,一般也就是cpu架构不对,编译时指定的march和实际执行的机器的march不同。这种情况,因为工具链一样,连接脚 本一样,所以可执行程序可以执行,不会发生exec format error。但是会包含一些不兼容的指令。还有另外一种可能,就是程序的执行权限不够,比如在目态下运行的程序只能执行非特权指令,一旦CPU遇到特权指 令,将产生illegal instruction错误。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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