2012-06-11 64 views
3

我有一個程序,我在Windows 7上運行Cygwin並且總是導致分段錯誤。這不是我的程序,但我需要幫助,開發人員至少要求我提供堆棧跟蹤 我的Cygwin變量如下所示:error_start=c:/cygwin/bin/dumper.exe。在執行程序之前,我也運行這個命令:ulimit -c unlimited。這些是我可以通過google找到的唯一兩個要求(包括this問題),以便在發生分段錯誤後從Cygwin獲取某些信息。需要堆棧跟蹤,但Cygwin甚至不打印核心轉儲

但是,當我運行該程序時,它會輸出消息Segmentation fault,並且不會打印a.exe.stackdump或任何其他轉儲文件,也不會啓動dumper實用程序。有關如何獲取所需信息的任何建議?

+0

它必須被編譯爲轉儲核心(例如'make CDEBUGFLAGS = -g ...')。如果您沒有收到核心文件,請檢查您的限制並確保您的「coredumpsize」未設置爲零(例如,「limit」)。你可以通過執行'limit coredumpsize unlimited'來將你的coredumpsize設置爲無限制。 – 2012-06-11 15:13:50

+0

如果我使用Visual Studio編譯它,你是否知道如何設置? –

+0

如果它是一個Windows應用程序,請閱讀本:http://stackoverflow.com/questions/4672572/how-can-i-configure-windows-to-generate-a-core-dump-from-an-application 否則,我不知道如何用Visual Studio做到這一點。 – 2012-06-11 17:04:38

回答

2

與Unix不同,核心轉儲在Windows上不是「免費」的;即使你可以得到它們,使用它們也不像在Unix上那麼容易。 Cygwin沒有解決這些基本的平臺差異。簡單的事實是調試在Windows上採用了不同的路徑:IDE,交互式調試器等。我不會繼續嘗試將那個方形釘子釘入你熟悉的圓形洞中。

短安裝Visual Studio和調試器下運行的程序,得到一些有用的最簡單的方法可能是安裝WinDbg,其下運行程序,然後說!heap -p -a UserAddr時崩潰。堆棧回溯應該在某處輸出。