2013-04-30 159 views
-3

我收到了一段我以前見過的段錯誤,但不知道如何解決。它告訴我,strcpy有問題,但我不確定它的含義。任何人都可以向我解釋這個信息,我需要做些什麼來解決它?神祕Seg故障

Program received signal SIGSEGV, Segmentation fault. 
__strcpy_sse2() at ../sysdeps/x86_64/multiarch/../strcpy.S:60 
60 ../sysdeps/x86_64/multiarch/../strcpy.S: No such file or directory. 
+0

在調試器中運行您的程序,這將顯示崩潰發生的位置。它還可以讓您檢查函數調用堆棧,並將其轉到您的代碼中,您可以在其中檢查變量以查看可能出錯的地方。 – 2013-04-30 05:18:58

+0

@ H2CO3這應該是個笑話嗎? – SwiftCore 2013-04-30 05:19:06

+0

@SwiftCore不,使用調試器不是玩笑,你應該真的這樣做。 (那麼,你如何期望我們在沒有顯示任何代碼的情況下調試你的程序呢?當然不是'strcpy()'失敗了,但是你的代碼不正確地使用它。) – 2013-04-30 05:19:33

回答

3

編譯-g選項的代碼,

gcc -g yourcode.c 

應您的程序崩潰,這將產生一個核心轉儲(你也可能需要激活核心轉儲代(如ulimit -c unlimited

現在你可以使用gdb來跟蹤問題:

gdb -c core yourexecutable 

使用bt(回溯)內部調試器,以查看堆棧跟蹤

0

如果可以的話,可以使用調試器,或者如果可以的話使用分析器。如果你無法花時間搜索strcpy的代碼(這也可能在DLL中),並檢查它是否正確使用。