J'utilise Visual Studio 2010 Professional Edition, et Windows Vista.
Tout d'abord, j'ai ce code. Comme vous pouvez le voir, il fera planter le programme !
using System;
namespace Crash
{
class Program
{
static void Main(string[] args)
{
string a = null;
if (a.Length == 12)
{
// ^^ Crash
}
}
}
}
Le programme se bloque sur l'instruction if. Maintenant, je veux savoir s'il s'est planté sur cette instruction if.
Si je "Démarre sans déboguer" à partir de Visual Studio, Crash.exe se plante. Il utilise 1 356 Ko de mémoire. Vista me propose l'option "Close Program/Debug". Si je choisis Debug, je peux ouvrir une nouvelle instance de Visual Studio, et il m'indique une NullReferenceException sur l'instruction if. C'est une bonne chose.
Supposons maintenant qu'il tombe en panne sur un autre ordinateur et que je lui demande de me fournir un fichier de vidage via le gestionnaire des tâches. Il fait 54,567kb. Pourquoi si gros ? C'est énorme ! Quoi qu'il en soit, je suis moins intéressé par cela (légèrement).
Si j'ouvre ce dump avec Windbg, je n'obtiens que très peu d'informations utiles à mon œil non averti :
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
Cependant, cela présente moins d'intérêt pour moi. Pour autant que je sache, j'ai besoin d'écrire des commandes pour obtenir des résultats utiles, et Visual Studio est meilleur.
Je l'ouvre donc avec Visual Studio. Je peux choisir de "Déboguer avec Native Only", mais j'obtiens beaucoup de choses qui signifient quelque chose pour des gens intelligents comme vous, et je ne suis pas intelligent ! J'obtiens ces deux écrans :
Donc, ma question :
Comment montrer Visual Studio à mon code source ?
De plus, y a-t-il un moyen d'obtenir un fichier de vidage plus petit ? Il semble ridiculement gros, même après compression. Je ne comprends pas pourquoi il ne pourrait pas y en avoir un qui ne serait qu'un tout petit peu plus grand que l'empreinte du programme, tout en obtenant un bon débogage, avec le code source.