首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在x86 Linux上调试SIGBUS

在x86 Linux上调试SIGBUS
EN

Stack Overflow用户
提问于 2010-01-19 04:58:32
回答 8查看 36.7K关注 0票数 19

在Linux中的通用x86用户应用程序中,什么会导致SIGBUS (总线错误)?我在网上找到的所有讨论都是关于内存对齐错误的,据我所知,这并不真正适用于x86。

(我的代码在Geode上运行,以防那里有任何相关的特定于处理器的怪癖。)

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-01-19 05:10:07

如果打开未对齐访问陷阱,则可以从未对齐访问获得SIGBUS,但在x86上通常是关闭的。如果出现某种错误,您也可以通过访问内存映射设备来获取它。

最好的办法是使用调试器来识别出错指令(SIGBUS是同步的),并尝试查看它试图做什么。

票数 15
EN

Stack Overflow用户

发布于 2010-01-19 08:10:05

在Linux中,除了内存对齐错误之外,还有很多其他原因会发生SIGBUS -例如,如果您试图访问超出映射文件末尾的mmap区域。

您是否在使用mmap、共享内存区域或类似的东西?

票数 23
EN

Stack Overflow用户

发布于 2010-01-20 02:32:12

哦,是的,还有一种更奇怪的方法来获取SIGBUS。

如果内核由于内存压力(必须禁用OOM杀手)或IO请求失败而无法在代码页中分页,则SIGBUS。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2089167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档