0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C++ Builder > Error: Access violation at address XXXX in module 'プログラム名.exe' 読み取り of address XXXXXXXX. の原因特定 > 複雑なものは簡素化する

Last updated at Posted at 2017-11-24
動作環境
C++ Builder XE4

Error

Access violation at address XXXX in module 'プログラム名.exe' 読み取り of address XXXXXXXX.

上記はメモリ関連のエラーによる原因特定が難しい例である。

原因特定 2017-11-24

今日の原因特定の方法は以下とした。

  1. watchdogを止める
    • 特有ハードウェアのwatchdogを使っているソフト
    • エラーと同時にwatchdogによりPC再起動がかかるのはデバッグが難しい
  2. 動作内容の把握
    • 同時に動くフォーム、TThreadの把握
  3. 同時に動くものを止めていく
    • 設定変更で止める
    • プログラム変更で止める

ある装置との通信プログラム(UDP)で上記のエラーが出ているようだと特定できた。
(ファイル保存処理と思っていたが、そちらは「結果」であって「原因」ではなさそうだ)。

複雑なもののデバッグ

複雑なものを複雑なままデバッグしようとする例は見かける。
そうなると「Engineering」ではなく「推測ゲーム」になる。

Engineerとしての正しい対処として、「複雑なものを簡素化する」ことをよく行い、それはうまくいっているように思う。

GitなどのVCSを使うことで、簡素化した後に元の状態に簡単に戻せるようになったこともデバッグ時間短縮に貢献している。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?