JustAnswer のしくみ:
  • 専門家に質問
    知識豊富な専門家があらゆる質問にお答えするために常に待機しています。
  • 専門家が丁寧に対応
    E メールやサイト内オンラインメッセージなど、さまざまな手段で回答を通知。必要に応じてフォローアップの質問をすることもできます。
  • 満足度 100% 保証
    専門家からの回答を確認し評価をすることで、支払うかどうかを決めます。
tsukuba_frogに今すぐ質問する
tsukuba_frog
tsukuba_frog, ITエンジニア
カテゴリ: IT・インターネット
満足したユーザー: 41
経験:  IT Professional
65805256
ここに IT・インターネット に関する質問を入力してください。
tsukuba_frogがオンラインで質問受付中

自作アプリを起動しメインウィンドウを表示した直後、XXXX(プログラム名)は動作を停止しました というウィンドウが出てそのウィンドウの「デバッグ」か「プログラムの終了」で、Visu

解決済みの質問:

自作アプリを起動しメインウィンドウを表示した直後、XXXX(プログラム名)は動作を停止しました というウィンドウが出てそのウィンドウの「デバッグ」か「プログラムの終了」で、Visual Studio Just-In-Time Debugger のウィンドウがでて、そこにAn unhandled win32 exception occured in アプリ名.exe[628]. ・・・ と出ます。どこで例外が起きたか調べたいのですが、これしか情報がありません。動作を停止したところはメインウィンドウを表示してAppクラスのInitInstance()という初期化処理の中でメッセージボックスを表示したところで止まっているようです。このときメッセージボックス内に表示されるはずの文字は出ず真っ白になっています。手がかりは上記の[628]だけですがこれはなにを意味しているでしょうか。この問題の調べ方を教えてください。動作環境はWindows7。 Visual studio 2008 は入れてません。開発は
Visual studio 2008 vc++  MFC を使用しています。なお発生頻度は非常に稀です。
投稿: 5 年 前.
カテゴリ: IT・インターネット
専門家:  tsukuba_frog 返答済み 5 年 前.
[628]はそのプログラムを実行した際のプロセスIDですので、
問題の解決には有効ではないです。
その後の「・・・」の部分に、「0x80000XXX」といったような文字列は無いでしょうか?
(このエラーの内容はWindowsのイベントログにも書かれていると思います。)
もしそれがあればそちらがWindowsのエラーコードなので、それをwinerror.hから探すかネットで検索すれば、実際に何が不都合でエラーとなったかの原因につながる手がかりになります。

また、もしエラーコードが表示されていないという場合は、
今の状態を見るにtry-catchでのエラーハンドリングがなされていないと思われますので
大体このあたりで出ていそう、という部分をtryで囲み
catchの中でエラーオブジェクトの情報をMessageBoxで表示させたりテキストファイルか何かに書きだしたりする事で、エラーコードが得られると思います。

ここからは完全なヤマカンですが、発生頻度が稀な不具合、という事ですと
・マルチスレッドが正しく制御されていない
・メモリの扱いに不備がある
という辺りがあやしい気がします。
もしマルチスレッドの処理を行っていて「このスレッドのこの処理は、あっちのスレッドでのあの処理が終わってからじゃないとまずい」という部分があれば、
mutexなどを使用したスレッド実行制御が必要です。
一方例えば「デバッグビルドだと出ないのにリリースビルドだと時々出る」というような場合、経験上メモリの扱いに問題がある場合が多いです。
メモリを動的に確保した後クリアせずに使っていたり、既に解放されている領域なのにそこへのポインタが残っていてアクセスしてしまっていたりする場所が無いか確認してみてください。
tsukuba_frogをはじめその他名のIT・インターネットカテゴリの専門家が質問受付中

IT・インターネット についての関連する質問