Я использую Visual Studio 2010 Professional Edition и Windows Vista.
Во-первых, у меня есть этот код. Как вы можете видеть, это приведет к сбою программы!
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,356 КБ памяти. Я получаю Vista вариант Close Program/Debug. Если я выберу Debug, я могу открыть новый экземпляр Visual Studio, и он указывает мне на исключение NullReferenceException в инструкции if. Это хорошо.
Теперь позвольте мне предположить, что он сбой на другом компьютере, и я заставляю их давать мне Dump файл через диспетчер задач. Это 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
Однако это меня не интересует. Насколько я могу судить, мне нужно написать команды для получения полезного вывода, а Visual Studio - лучше.
Поэтому я открываю его с помощью Visual Studio. Я могу выбрать "Debug with Native Only", но я получаю много вещей, которые означают что-то умные люди, подобные вам, и я не умный! Я получаю эти два экрана:
Итак, мой вопрос:
Как показать Visual Studio исходному коду?
Кроме того, есть ли способ получить меньший файл дампа? Это кажется смехотворно большим, даже после сжатия. Я не понимаю, почему не может быть одного, который будет всего лишь чуть больше, чем размер программы, и до сих пор получать хорошую отладку с исходным кодом.