2015-04-03 70 views
1

我正在使用GDB調試Yosemite OSX上的程序。在斷點處,我想使用內部函數打印出一些信息,但即使使用一個簡單的函數,我也會得到一個SIGBUS錯誤。例如:gose on Yosemite:在gdb命令行調用函數時出現SIGBUS錯誤

Breakpoint 1, ... 
(gdb) print my_info_function() 
Program received signal SIGBUS, Bus error. 
<function called from gdb> 
The program being debugged was signaled... 

其中my_info_function是:

const char *my_info_function() { 
    return "hello"; 
} 

另外,如果我運行GDB的程序,然後打斷它在運行時,那麼,無論之前或發生中斷在上述斷點之後,print my_info_function()工作正常。

這個問題似乎開始發生在升級到優勝美地(來自獅子)後,所以我傾向於認爲它與此有關。我嘗試過使用不同的編譯器(clang,gcc-4.9,brew vs macports),並且使用/重新安裝/重新構建不同的gdb(brew,macports以及this brew gdb version),都無濟於事。

有關如何解決這個問題的任何建議?我正在使用emacs + gdb,並希望保持這種方式。我可能會用emacs + lldb很好,但似乎有一些關於是否支持的爭論。

+0

它通過'main'工作嗎?或者當你調用一個函數? – teppic 2015-04-04 00:19:00

+0

主要第一次啓動時和多線程之前有效。仔細一看,似乎只有在運行在子線程上的代碼觸發斷點時才能重現。對於它的價值,lldb中的相同調試練習按預期行事(沒問題)。 – mwag 2015-04-04 11:23:07

回答

1

有關如何解決這個問題的任何建議?

這看起來像是GDB中的一個bug。

您可以嘗試從源代碼構建GDB,自行調試GDB,然後將修補程序發送到gdb-patches mailing list,或僅在GDB bugzilla(並希望其他人修復它)報告它。

相關問題