诊断OS X Yosemite上的SIGBUS错误

时间:2015-09-09 20:13:17

标签: c++ c osx-yosemite sigbus

我试图将一些代码转换为在OS X上运行,并且遇到一些低级内存编写代码(在Linux / Windows平台上运行)的问题。

具体来说,被调用的方法是:

void Dset_mem_write_i1B(void* ptr,int val) {
  unsigned char* p=(unsigned char*)ptr;
  *p=(val)&0xFF;
}

相关测试代码(GTest)是:

TEST(DsetMemIoTest, test_write) {
  const char mem[4] = "";
  void* vmem = (void*)mem;
  int mem_read = 0;
  int to_write = 0;

  to_write = 'a';
  Dset_mem_write_i1B(vmem, to_write);
  mem_read = Dset_mem_read_i1B(vmem);
  EXPECT_EQ('a', (char)mem_read);

在gdb中运行时(使用自制软件安装)我得到了:

Program received signal SIGBUS, Bus error.
0x0000000100009213 in Dset_mem_write_i1B (ptr=0x100054c95 <DsetMemIoTest_test_write_Test::TestBody()::mem>, val=97) at ...
78        *p=(val)&0xFF;

我尝试添加明确的演员阵容,似乎没有什么区别。

我无法找到任何关于为何在OS X上失败的线索。如何诊断这一点的任何帮助都将不胜感激。

0 个答案:

没有答案