読者です 読者をやめる 読者になる 読者になる

ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

windows環境で自作プログラム叩いたらR6010でabortした話

C++ VisualStudio トラブルシューティング windows

何があった

VisualStudioでC++プログラム書いて出来上がったバイナリをダブルクリックで叩いたらR6010でabortして何のヒントも残さずに死んだ。開発環境上では元気に動いていたのに…。

原因は

  1. ファイルオープンで失敗して発生した例外(std::runtime_error)が投げられる
  2. どこでもキャッチされずに(そりゃそうだ)main関数を抜ける
  3. ランタイムくん「なんかよくわかんないけど問題あったからabort()したよ」

ランタイムくんが「例外が発生したよ」という情報を隠してたんですね…。

どうすりゃいいのか

main()関数でtry-catch文を使ってstd::exceptionをキャッチしてwhat()の返す文字列をcerrなりファイルなりダイアログなりに流してから再throwすれば何が起きたかはわかるようになる。

感想

ランタイムくんのガバガバ情報伝達きらい

参考

stackoverflow.com