Ich kann nicht brechen, wenn ich im Kernel-Debug-Modus eine Verbindung zum Zielrechner herstelle

Ich starte einen Prototyp mit einem Windows-Minifilter. Ich habe meine Umgebung eingerichtet:

eine virtuelle Zielmaschine (tatsächlich 3: Windows 7, 8 und 8.1)eine Host-Entwicklungsmaschine (die Visual Studio 2013- und HyperV-VMs hostet)

Ich habe es endlich geschafft, den Test-Minifilter auf dem Zielcomputer bereitzustellen, aber mein Problem ist:

Ich kann den Kernel auf dem Zielcomputer nicht brechen.

Wenn ich einen Build erstelle und mit Visual Studio Debugger beginne, ist dies das Ergebnis:

    -----------------------------------------------------------------------
-----------------------------------------------------------------------
                  Starting New Debugger Session         
-----------------------------------------------------------------------
-----------------------------------------------------------------------

Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

MONTLUC\pascal (npipe WinIDE_01CED6303D19BD92) connected at Thu Oct 31 12:56:31 2013

Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Waiting for pipe \\montlucw81x64\pipe\dbg
Waiting to reconnect...
[12:56:32:860]: Removing any existing files from the remote driver folder
[12:56:33:121]: Removing any existing files from test execution folder

te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_DriverRemoval'" /p:"InfFile=passThrough.inf" /p:"Debug=1" /p:"ImportDriver=1" /p:"RemoveDriver=1" /p:"CertificateFile=package.cer" /p:"PackageGuid={A23BA0FC-7265-4E3C-B99F-1E7A04AD970D}" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Removal_(x64)_(possible_reboot)_00060.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:56:56:926]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:56:57:457]: Removing any existing files from test execution folder

te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_DriverPreparation'" /p:"InfFile=passThrough.inf" /p:"Debug=1" /p:"ImportDriver=1" /p:"RemoveDriver=1" /p:"CertificateFile=package.cer" /p:"PackageGuid={A23BA0FC-7265-4E3C-B99F-1E7A04AD970D}" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Preparation_(x64)_(possible_reboot)_00060.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:57:00:437]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:57:00:893]: Removing any existing files from test execution folder

te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_RunProcess'" /p:"BinaryPath=rundll32" /p:"Arguments=setupapi,InstallHinfSection DefaultInstall 132 C:\DriverTest\Drivers\passthrough.inf" /p:"ExitCodes=0" /p:"WorkingFolder=%SystemDrive%\DriverTest\Drivers" /p:"LogOutput=1" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Install_(x64)_(possible_reboot)_00025.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:57:03:916]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:57:04:418]: Removing any existing files from test execution folder

te.exe "%SystemDrive%\DriverTest\Run\DriverTestTasks.dll" /select:"@Name='DriverTestTasks::_DriverPostInstall'" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Driver_Post_Install_Actions_(x64)_(possible_reboot)_00060.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated
[12:57:06:139]: Result Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
[12:57:06:564]: Driver Installation summary:
[12:57:06:566]:   Driver Removal (x64) (possible reboot): Pass
[12:57:06:571]:   Driver Preparation (x64) (possible reboot): Pass
[12:57:06:578]:   Driver Install (x64) (possible reboot): Pass
[12:57:06:586]:   Driver Post Install Actions (x64) (possible reboot): Pass

Und wenn ich versuche zu brechen, passiert nichts.

Wenn ich eine direkte Verbindung zum Kernel herstelle (über das VS-Menü "Debug" -> "An Prozess anhängen" -> "Kernel-Debugging" -> "Anhängen"), erhalte ich Folgendes:

-----------------------------------------------------------------------
-----------------------------------------------------------------------
                  Starting New Debugger Session         
-----------------------------------------------------------------------
-----------------------------------------------------------------------

Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

MONTLUC\pascal (npipe WinIDE_01CED630A522D2F5) connected at Thu Oct 31 12:59:26 2013

Microsoft (R) Windows Debugger Version 6.3.9600.16384 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Waiting for pipe \\montlucw81x64\pipe\dbg
Waiting to reconnect...

Aber auch hier ist es unmöglich zu brechen.

Ich habe es versucht :

Alle Ziel-Hosts (Windows 7, 8 und 8.1) haben das gleiche Ergebnis erzielt (und ja, alle sind für das Kernel-Debugging korrekt konfiguriert).Verwenden von Netzwerk anstelle von Named PipesVerwenden von WinDBG anstelle von Visual Studio

Aber ich bekomme immer das gleiche Ergebnis: Unmöglich, dies zu brechen! @ # Kernel!

Google ist nicht mein Freund, ich konnte kein ähnliches Problem finden.

Jetzt frage ich mich also:

Könnte ich tatsächlich nicht mit dem Zielcomputer verbunden sein, trotz der Angaben des Debuggers (aber die Bereitstellung funktioniert)?Könnte es ein Problem beim Debuggen von HyperV und Kernel geben?

Jede Idee ist willkommen!

Bearbeiten: Ich habe einen Test mit einem realen Zielcomputer anstelle eines virtuellen Computers durchgeführt und habe das gleiche Problem. Dies hat also nichts mit Hyper-V zu tun.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage