novembre
2011
Si comme moi, il vous arrive de développer des applications de type Service Windows, vous utilisez fort probablement l’instruction suivante (c#)
#if DEBUG
Debugger.Break();
#endif
Ce qui permet d’indiquer (via un symbole de compilation conditionnel), qu’en DEBUG, il faut démarrer le debugger.
Ce système fonctionne grâce à un mécanisme non trivial :
Debugger.Break() entraine l’envoi d’une exception (spéciale), et le debugger par défaut sait qu’il faut breaker.
Sous XP, si aucun debugger n’était attaché à l’application, il proposait d’un ouvrir un.
Ce mécanisme existe grâce au Windows Error Reporting (WER)
Sous Windows 7… ce comportement n’est pas actif…
Pour permettre le debuggage :
Ouvrez Regedit.exe
chercher une de ces deux clés :
HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows Error Reporting
ou
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting
et dans .\DebugApplications
ajouter le nom de l’exécutable (avec l’extension) qui doit permettre le debuggage (REG_DWORD), et indiquer la valeur à 1.
Pour info :
http://msdn.microsoft.com/en-us/library/bb513638(VS.85).aspx