ixe*_*013 28 dll windbg remote-debugging
当我ntsd -d通过管道传输时,我无法在windbg中显示源代码windbg -k,但是当我在本地调试时它可以工作.
我想调试Winlogon.exe和LSASS.exe的第一个代码执行.但为了便于重现问题,我编写了这个设置:
/noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200我可以使用此命令在本地进行调试,从C:\ CrashMe启动:
windbg -g -G -srcpath C:\CrashMe -y C:\CrashMe debug\CrashMe.exe
Run Code Online (Sandbox Code Playgroud)
我可以启动Windows XP虚拟机并使用以下命令连接到它:
windbg -n -k com:pipe,port=\\.\pipe\com_1,reconnect -srcpath SRV*;C:\CrashMe -y
c:\windows\system32;c:\windows\symbols;C:\CrashMe\debug
Run Code Online (Sandbox Code Playgroud)
但我需要调试远程机器.在目标上,我有这些选择:
-server和调试-remote在每个选项中,我都可以看到符号(x crashme!*作品).
我不能使用#1(-server)或#2(breakin.exe <pid>),因为我想调试身份验证提供程序的启动代码,所以我需要LSASS.exe从下开始ntsd -d.我不能让它运行并在以后附加.
我的理解是我需要使用IFEO.使用gflags.exe而不是手动修改注册表,我将可执行选项设置为
c:\dtw\ntsd -d -G -lines -x -y c:\symcache;c:\windows\system32 -n -srcpath C:\CrashMe\
Run Code Online (Sandbox Code Playgroud)
.open任何文件,但我不能使用该文件来设置断点.我怎样才能看到下运行的过程中我的DLL的源代码ntsd -d通过windbg -k?
TL;DR:使用 -server <TRANSPORT> -ddefer 并通过设置了 .lsrcpath 的第二个 Windbg 会话进行连接以获得您想要的内容。
其余:源模式需要从运行调试器的系统访问源文件。在通过内核模式连接调试用户模式代码的情况下,这变得很棘手。由于测试是在目标机器上的 ntsd 上下文中执行的,并且该机器已进入调试器,因此加载源文件通常不起作用。我相信,如果您在目标计算机上放置完整的源代码树或将源路径指向共享,则可能会发生这种情况,但我尚未验证这一点。
我验证的是,您可以使用此方法将源文件加载到主机中。
这是通过执行以下操作来实现的: