Visual Studio 2010ProfessionalEditionとWindowsVistaを使用しています。
まず、私はこのコードを持っています。ご覧のとおり、プログラムがクラッシュします。
using System;
namespace Crash
{
class Program
{
static void Main(string[] args)
{
string a = null;
if (a.Length == 12)
{
// ^^ Crash
}
}
}
}
プログラムはifステートメントでクラッシュします。今、私はそれがそのifステートメントでクラッシュしたことを知りたいです。
Visual Studioから「デバッグせずに開始」すると、Crash.exeがクラッシュします。1,356kbのメモリを使用します。プログラム/デバッグを閉じるというVistaオプションが表示されます。デバッグを選択すると、Visual Studioの新しいインスタンスを開くことができ、ifステートメントでNullReferenceExceptionが示されます。これはいい。
ここで、別のコンピューターでクラッシュすると仮定します。タスクマネージャーを介してダンプファイルを提供してもらいます。54,567kbです。なんでこんなに大きい!広大です!とにかく、私はそれにあまり興味がありません(少し)
Windbgでそのダンプを開くと、訓練を受けていない目にはほとんど役に立たなくなります。
Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Users\Richard\Desktop\Crash.DMP]
User Mini Dump File with Full Memory: Only application data is available
Symbol search path is: SRV*C:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows Server 2008/Windows Vista Version 6002 (Service Pack 2) MP (4 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS Personal
Machine Name:
Debug session time: Sat Jan 15 11:07:36.000 2011 (UTC + 0:00)
System Uptime: 0 days 4:24:57.783
Process Uptime: 0 days 0:00:05.000
........................
eax=002afd40 ebx=77afa6b4 ecx=002afd48 edx=00000001 esi=001cdaa4 edi=00000000
eip=77bf5e74 esp=001cda5c ebp=001cdacc iopl=0 nv up ei ng nz ac pe cy
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000297
ntdll!KiFastSystemCallRet:
77bf5e74 c3 ret
しかし、これは私にはあまり興味がありません。私の知る限り、有用な出力を得るにはコマンドを書き込む必要があり、VisualStudioの方が優れています。
そこで、VisualStudioで開きます。「ネイティブのみでデバッグ」を選択することもできますが、あなたのような賢い人にとって何か意味のあるものがたくさんあります。私は賢くありません。次の2つの画面が表示されます。
だから、私の質問:
Visual Studioをソースコードに表示するにはどうすればよいですか?
また、より小さなダンプファイルを取得する方法はありますか?圧縮した後でも、途方もなく大きいようです。プログラムのフットプリントよりもほんの少し大きいだけで、ソースコードを使用して優れたデバッグを行うことができない理由がわかりません。