2014-09-16 14 views
7

Mam przystawkę MMC, którą próbuję debugować. Obecnie poniższy kod, umieszczony w konstruktorze Snap-in, w prace w zakresie przyłączania debugera do niego:Debugger nie dołącza do procesu

public MySnapIn() 
{ 
#if DEBUG 
    if (!Debugger.IsAttached) 
    { 
     Debugger.Launch(); 
    } 
#endif 
    ... 
} 

ale jest naprawdę irytujące, zawsze trzeba dołączyć debugera do Visual Studio. Chcę zautomatyzować ten proces. Idealnie byłoby po prostu nacisnąć F5 i automatycznie dołącza debugger. Próbowałem następujące:

  • Właściwości Project -> Uruchom program zewnętrzny -> wpisane w "C: \ Windows \ System32 \ mmc.exe" Właściwości
  • Project -> argumentów wiersza poleceń -> Dał to Ścieżka do pliku .msc (przechowuje układ snap-in, dzięki czemu ładowanie jest łatwiejsze za każdym razem, dzięki czemu nie zawsze trzeba File -> Add/Remove Snap-in).

To nie zadziałało. Debugger nie zostanie dołączony automatycznie. Jak mogę zautomatyzować ten proces lub blokowanie automatycznego debugowania?

+2

+1 po prostu za nauczenie mnie, jak poprosić o dołączenie debuggera ('Debugger.Launch()'). Nie wiedziałem, że to możliwe. – stakx

+1

@stakx Działa * przez większość czasu *. Jeśli masz na przykład usługę Windows lub jakiś inny rodzaj aplikacji, która nie powinna mieć GUI (zgodnie z miękkim mikro), to nie działa: http://stackoverflow.com/questions/12042054/debugger -launch-on-windows-service-in-windows-8 Możesz również chcieć poznać WER jako narzędzie do debugowania (generuje zrzuty po awarii, dzięki zrzutom awaryjnym możesz załadować je do Visual Studio i ponownie podłączyć debugger w punkcie awarii i zobaczyć stan wszystkich obiektów aplikacji). – Alexandru

+0

@stakx WER wymaga jedynie zmiany klucza rejestru (http://msdn.microsoft.com/en-us/library/windows/desktop/bb787181(v=vs.85).aspx) i plików PDB. Możesz także generować zrzuty z Menedżera zadań (CTRL + SHIFT + ESC -> kliknij prawym przyciskiem myszy aplikację -> Wygeneruj plik zrzutu) – Alexandru

Odpowiedz

6

Właśnie dostałem to. As it turns out, trzeba korzystać z 32-bitową MMC wyrzutni w systemie 64-bitowym (której jestem dalej), a następnie dodać flagę -32 do „argumentów wiersza komend” na force it to stay in 32-bit mode:

  • zadbali mój projekt typu snap-in był skierowany do dowolnego procesora w programie Configuration Manager.
  • Właściwości Project -> Uruchom program zewnętrzny -> wpisane w "C: \ Windows \ SysWOW64 \ mmc.exe" Właściwości
  • Project -> argumentów wiersza poleceń -> Dał mu ścieżkę do pliku .msc, , a także -32 flaga (przechowuje układ snap-in, dzięki czemu łatwiej jest go załadować za każdym razem, dzięki czemu nie zawsze będziesz musiał File -> Add/Remove Snap-in).
+3

'" C: \ Windows \ SysWOW64 \ mmc.exe "' chociaż nazwa ma 64 w tytule, ten folder jest w rzeczywistości wersją 32-bitową programów na żywo, więc uruchamiasz 32-bitowy program uruchamiający, a nie 64-bitowy.Wersje 64-bitowe występują w 'C: \ Windows \ System32', jeśli używasz aplikacji 64-bitowej lub' C: \ Windows \ sysnative', jeśli używasz 32-bitowej aplikacji (System32 przekieruje do SysWOW64, jeśli używasz 32 bit app) –

+0

@ScottChamberlain To jest tak szaleńczo sprzeczne z intuicją, ale dzięki, zaktualizuję moją odpowiedź. – Alexandru

+1

Aby uzyskać więcej informacji na temat tego rodzaju przekierowań, zobacz tę stronę MSDN na stronie [File System Redirector] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187 (v ​​= vs. 85) .aspx) –

Powiązane problemy