3 つのコンパイラ (Borland、gnu、および Microsoft) を使用する必要があるプロジェクトがあります。それは 2/3 で動作しますが、今は Microsoft で動作させる必要があります。他のコンパイラで正常に動作する場所でクラッシュするように見えるので、コマンドラインでデバッグする方法があるかどうか、おそらくスタックトレースを取得するか、クラッシュの原因となった行を取得する方法があるかどうか疑問に思っています。gdb
ヌーで。
5 に答える
(完全な開示: 私は Visual Studio チームで働いています)
Microsoft C++ コンパイラを使用している場合、Visual Studio は既にインストールされていますか? その場合は、組み込みのデバッガーを使用できます。そうでない場合は、Visual C++ 2010 Expressを無料で試すことをお勧めします。優れたネイティブ デバッガーを備えています。最初のチャンスの例外 (C++、SEH、Win32 例外) でブレークし、コール スタック、ローカルなどと共に発生した行に直接移動できます。
Debugging Tools for Windows - (GUI WinDBG デバッガーに加えて)cdb
およびコンソール デバッガーを含むデバッグ ツールの優れたパッケージ。ntsd
このパッケージには素晴らしいドキュメントがあり、クラッシュを処理する「ジャスト イン タイム」デバッガーとして簡単にセットアップでき、クラッシュ ダンプと非常にうまく連携します。
これらは、Microsoft がクラッシュ分析 (およびその他) に使用するハードコア デバッグ ツールです。
Windowsにはデバッガーのバージョンが付属していることに注意してntsd
ください(少なくとも以前は-ツールパッケージのインストール以外の私のWin7ボックスにはないように見えます)が、とにかくパッケージを入手して最新のツールを入手することをお勧めします-そして私が言ったように、ドキュメントは素晴らしい情報が豊富です。
さて、あなたは、意図的にプログラムをクラッシュさせようとする 1 つのコンパイラーに問題を抱えています。これは「実行時エラー チェック」と呼ばれる /RTC オプション コンパイル オプションです。オフにして、他のものと同じように動作させることができます。または、「ここで何かがおかしい」という角度を追求することもできます。/RTC に関する MSDN ライブラリの記事に詳しく記載されています。
Codeview はそれを行う古い製品ですが、Visual Studio を使用して同じことを実行できない理由はありません。