2012-07-07 28 views
10

gdbを使用するように教えています。ランダムテストをいくつか実行しています。私はWindows 7 x64でMinGWのポータブルインストールを使用していることに言及する価値があります。私はスタックオーバーフローの結果を知っているプログラムを作成しました。そして、gdbで実行すると、最初に2つのSIGSEGVシグナル(驚きはありません)を取得し、コード030000000375で終了します(驚きはありません)。gdb:コード030000000375で終了したプログラム

Program received signal SIGSEGV, Segmentation fault. 
Program received signal SIGSEGV, Segmentation fault. 
Program exited with code 030000000375. 

好奇心が私を魅了しています...何がそのコードですか?私はそれを見つけ出し、ほとんど見つけなかった。

ありがとうございます!

UPDATE:参考のために私はUbuntuで同じプログラムを試み、その結果はわずかに異なっている:

Program received signal SIGSEGV, Segmentation fault. 
Program terminated with signal SIGSEGV, Segmentation fault. 
The program no longer exists. 
+0

いつも同じコードがありますか?もしそうなら、あなたはあなたのプログラムのデータを変更しようとしましたが、あなたはまだ同じコードを取得していますか? – Shahbaz

答えて

10

gdb進形式で終了コードをプリントアウトします。明白ではないが、先頭に0と示されている。

したがって030000000375は、16進数で0xC00000FDです。これにより、コードはWindowsプログラマーにとってより一般的に見えます。

0xC00000FDSTATUS_STACK_OVERFLOWであり、ntstatus.hで定義する必要があります。

+0

これは非常に良いキャッチです! – ArjunShankar

+1

良い発見、ありがとう!また、スタックオーバーフローが発生したときにWindowsが実際にあなたに通知するのは非常に面白いですが、Linuxはそうではありません。 – The111

+0

あなたは大歓迎です! Btw:おそらく、このコードで 'gdb:** Program ** exited with code 030000000375 * 'にこの質問のトピックを修正する必要があります。 @ The111 – alk

関連する問題