2

私は C++ プログラミングが初めてです。いくつかの警告が表示されるだけで正常にコンパイルされる Windows アプリケーションをコンパイルしていますが、起動しても起動していないようで、実行の 3 秒後にアクセス違反が返されます。デバッグしようとしても、コードに入っていないように見えるので、どこから問題を探し始めればよいかわかりません。

デバッガーから取得できた情報は次のとおりです。

Building to ensure sources are up-to-date
Build succeeded
Selecting target: 
Debug
Adding source dir: C:\Documents and Settings\Christian Ekiza\Mis documentos\My Dropbox\Private Files\coding\juego_pruebas_01\juego_pruebas_01\
Adding source dir: C:\Documents and Settings\Christian Ekiza\Mis documentos\My Dropbox\Private Files\coding\juego_pruebas_01\juego_pruebas_01\
Adding file: bin\Debug\juego_pruebas_01.exe
Starting debugger: 
done
Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Setting breakpoints
Debugger name and version: GNU gdb 6.8
Child process PID: 3328
Program received signal SIGSEGV, Segmentation fault.
In ?? () ()

これはコールスタックからのものです

#0 00000000 0x000154e4 in ??() (??:??)
#1 00409198 __cmshared_create_or_grab() (../../../../gcc-4.4.1/libgcc/../gcc/config/i386/cygming-shared-data.c:140)
#2 00000000 0x0040131b in __gcc_register_frame() (??:??)
#3 00000000 0x0040a09b in register_frame_ctor() (??:??)
#4 00000000 0x00408f42 in __do_global_ctors() (??:??)
#5 00000000 0x00401095 in __mingw_CRTStartup() (??:??)
#6 00000000 0x00401148 in mainCRTStartup() (??:??)

そして、CPU レジスタは

'gs' register with a hex value '0x0'

どこから問題を探し始めればよいかわかりません。誰でも私を助けたり、正しい方向に向けたりできますか?

注: Code::Blocks を使用しています

4

5 に答える 5

1

おっしゃる通りWindowsアプリです。次に、起動に問題がある場合は、ADPlusが非常に便利であることがわかりました。

編集2:

ADPlus が適用されない場合は、ユーザー モード プロセス ダンパーもチェックしてください。

于 2010-11-01T13:30:09.213 に答える
0

デバッグモード(-g)を有効にしてコンパイルしましたか?

また、実際に警告を修正することを真剣に検討してください。ほとんどの場合、これらは解決する必要のあるコードの実際の問題です。

また、これがほぼ空のメインで発生するかどうかを確認する必要があります(コードのほとんど/すべてをコメントアウトしてくださいmain)。

于 2010-11-01T14:50:04.243 に答える
0

次の無料の MS ツールを試してみてください。どちらも、この種の問題のデバッグに最適です。

于 2010-11-01T13:59:30.957 に答える
0

DLL の依存関係の 1 つを正しくロードまたはインスタンス化できないように思えます。

于 2010-11-01T14:02:46.073 に答える
0

コンストラクターを持つクラスのグローバルインスタンスがいくつかある場合-コンストラクターでエラーが発生し、クラスがグローバルに宣言されている場合(ところで悪いことです)-main()の前でもsigsegvを取得します。そのようなクラスがある場合 - コードをリファクタリングして main (または他の関数) 内に配置してみてください - デバッグが容易になります。

于 2010-11-01T13:27:40.440 に答える