草庐IT

windows - nt!KeWaitForSingleObject 没有参数

我目前正在尝试调试系统死锁,但我很难理解这一点。Child-SPRetAddr:ArgstoChild:CallSitefffff880`035cb760fffff800`02ecef72:00000000`00000002fffffa80`066e8b5000000000`00000000fffffa80`066a16e0:nt!KiSwapContext+0x7afffff880`035cb8a0fffff800`02ee039f:fffffa80`0b9256b000000000`000007ff00000000`0000000000000000`00000000:nt!KiCo

c++ - windbg中 "Internal"输出中的 "!heap -h"是什么意思?

我正在关注这篇stackoverflow帖子Whatdothedifferentcolumnsinthe"!heap-flt-sxxxx"windbgcommandrepresent我正在尝试了解为其中一个占用大量内存的堆打印出的信息。我可以理解大部分专栏,但在我的windbg上,我看到了一个额外的专栏。我的大部分条目都标记为内部。我想知道那是什么意思。我已经完成了!gflags+ust。所以,我可以看到进行内存分配的调用堆栈。除了标记为Internal的条目外,我可以对大多数条目执行此操作。内部是什么意思?它与LFH的实现有关吗?如果这是LFH的内部实现,这些Internal堆条目将

windows - 调试可怕的 'Application has failed to initialize' 错误

尝试运行我在Windows上构建的可执行文件时,我偶尔会遇到此错误,但我不知道是什么原因导致的,也不知道如何修复它。使用普通的MSVC调试器,它只会弹出一个对话框并退出,没有机会做任何事情或查看任何东西。我已经设法至少捕获了一些东西并使用Microsoft控制台调试器获得了堆栈跟踪,但我不知道从这里要看什么。在进入我的程序的主要功能或运行我的任何代码之前,它似乎在ntdll.dll中奇怪地失败了。C:\>cdbbugreproMicrosoft(R)WindowsDebuggerVersion6.11.0001.404X86Copyright(c)MicrosoftCorporatio

windows - 我如何学习 WinDbg? (关于 : seemingly simple hung process)

我正在尝试确定进程挂起的原因,并且正在学习各种工具,例如ProcessExplorer,ProcessMonitor,和WinDbg.无论如何,我正在尝试使用WinDbg,在附加到我的进程后,调试器会这样说:(1e9c.1128):Breakinstructionexception-code80000003(firstchance)eax=7ffda000ebx=00000000ecx=00000000edx=77c5c964esi=00000000edi=00000000eip=77c18b2eesp=0543ff5cebp=0543ff88iopl=0nvupeiplzrnapen

c++ - 如何在 Windows 中以编程方式从调用堆栈帧中读取函数参数?

我试图遍历调用堆栈帧并从中提取一些信息。我能够使用来自WinDBG的StackWalk64、SymGetSymFromAddr64和SymGetLineFromAddr64API提取文件名、行号和函数名。但是STACKFRAME64中的DWORD64Params[4]是StackWalk64的返回值,只支持回读4个64位来自帧的函数参数。更糟糕的是,在32位系统上,仅使用Params[4]的低32位,因此超过32位的单个参数需要两个或更多元素。typedefstruct_tagSTACKFRAME64{ADDRESS64AddrPC;ADDRESS64AddrReturn;ADDRES

windows - 如何在启动时关闭 Windows 内核调试?

我有一台Vista32位机器,我想在其上启用本地内核调试。在WinDbg中,我选择了文件/内核调试并选择了本地选项卡并单击确定。我收到以下消息。系统不支持本地内核调试。...WindowsVista中默认禁用本地内核调试,您必须运行“bcdedit-debugon”并重新启动才能启用它。我天真地按照说明打开提升的命令提示符并键入“bcdedit-debugon”并重新启动。但是,在重新启动时,系统在到达登录屏幕时挂起-或者就在我输入用户名和密码后挂起。我怀疑正在发生的事情是因为启用了调试器,在内核调试器进程中触发了用户模式异常,它正在等待我从附加的调试器输入一些输入??我希望在实际目标

c++ - 使用 WinDBG 识别有缺陷的函数

我已经从7.1WindowsSDK安装了WinDBG。然后用VC++2008我制作了一个程序“CleanPayload.exe”,它只包含一个“main”和一个故意包含缺陷的函数调用。它是一个包含调试符号的发布版本。我将该程序打开到WindDBG中,然后做了一个.sympath+来指示该程序的PDB所在的位置。做了一个ld*来加载所有符号做了一个lm来验证所有符号都已加载(我的程序的私有(private)符号,Windows库的公共(public)符号)。然后我运行了该程序,它抛出了第一次异常,这是意料之中的。如下:(910.12a0):WOW64breakpoint-code4000

windows - WinDbg 中的 "Break instruction exception"是什么?

我正在调试一些随机的崩溃错误,但实际上很难深入研究。因为当我打开故障转储时,只发现一个错误:0:000>.exr-1ExceptionAddress:00000000ExceptionCode:80000003(Breakinstructionexception)ExceptionFlags:00000000NumberParameters:0其实我没有在代码中设置任何硬代码断点,所以我在谷歌搜索这个异常,有人说这个异常可能是由堆损坏引起的。所以我的问题是,除了硬代码断点、调试时手动断点、堆损坏之外,是否还有其他原因导致此异常?另一个问题是,我尝试使用ApplicationVerifi

windows - 为什么 windbg 命令以 .或者 !

和.之间有什么区别吗?和!? 最佳答案 WinDbg中有不同种类的命令。常规命令,例如kb适用于调试session。例如。显示堆栈转储等元命令以点为前缀,例如.加载。元命令适用于调试器本身。例如。加载扩展、显示帮助等。扩展命令以感叹号为前缀,例如!analyze和!dumpheap在调试器扩展(提供附加功能的DLL)中定义。 关于windows-为什么windbg命令以.或者!,我们在StackOverflow上找到一个类似的问题: https://stack

windows - 已安装 VS 2015 后如何安装 WinDbg?

我正在尝试从thispage安装WinDbg,就在Windows10调试工具(WinDbg)部分下。但是,当我下载可执行文件并运行它时,它告诉我YoumustuninstalltheWindowsSoftwareDevelopmentKit-Windows10.0.10586.15beforeyoucaninstallthelatestversionofthekit.我猜这可能与我已经安装了VS2015(和Windows10SDK)这一事实有关。但是,当我转到开发人员命令提示符并输入>wherewindbg它告诉我找不到WinDbg。那么,如何在不做任何激烈的事情(比如重新安装Visu