当前位置: 首页 > 面试题库 >

在x86 Linux上调试SIGBUS

夹谷成仁
2023-03-14
问题内容

在Linux的通用x86用户态应用程序上,什么会导致SIGBUS(总线错误)?我在网上可以找到的所有讨论都与内存对齐错误有关,据我了解,这实际上并不适用于x86。

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


问题答案:

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

最好的选择是使用调试器来识别错误的指令(SIGBUS是同步的),并尝试查看其意图。



 类似资料:
  • 作者注:这个错误的许多问题鼓励我张贴这个问题,以供将来参考。 相关问题: 使用node_env=production的spawn函数 node.js child_process.spawn ENOENT error-仅在supervisord 生成ENOENT Node.js错误 https://stackoverflow.com/questions/27603713/nodejs-spawn-e

  • 我有一个expo项目,我们可以运行和构建它,它可以在android和iOS中正常工作。我想要的是使用我的VisualStudio代码调试这个项目。 我遵循一些指南,尝试了以下方法: 在vscode中添加React本机工具扩展 在vscode调试器中添加“附加到packager”配置 更改设置中的“react native.packager.port”。json与世博包装机端口(19001)匹配 举

  • 我们有一个使用Drools规则的遗留Java/Spring项目。有什么方法可以在IntelliJ上调试规则文件,比如添加断点和单步执行规则逻辑?

  • 我有一个有三种不同构建类型的项目:debug、beta和Release。我的测试包总是为调试构建而创建的,但是QA使用的是beta构建,我们希望QA在他们大量的设备上运行这些测试。 我试图为QA创建一个测试apk,该apk由与beta构建相同的密钥签名。翻阅Android-Gradle文档,我没有看到任何东西告诉我不能这样做,但我没有看到任何配置它的东西。我是否可以配置在组装测试APK时使用的密钥

  • 在线调试 一、为什么需要『在线调试』 开发者集成SDK的过程中,需要进行一系列的测试,以确认SDK的集成情况。但往往在调试过程中,会因为无法及时地看到前端报表的数据变化,甚至不确认数据是否发送成功等原因,从而对SDK中对于事件或页面的配置是否成功产生疑虑。只得继续耐心等待服务器反馈,或重复检查埋点。 为了解决这一问题,提高开发者集成SDK的效率和成功率,我们针对性的推出了『在线调试』功能。 二、『

  • 我无法在Hyperledger Fabric 1.4上的nodejs中的链码上读取日志,我试图通过以下方式读取日志: 但我唯一能看到的日志是这样的: