structNode{structNodeYNY;intdata;};当我这样做时,对于该结构的实例指针“N”2:kd>?poi(poi(N))Evaluateexpression:-70368698399456=ffffc000`02ba8520基本上我想用这样的东西bpigdkmd64!KmRender+0x199".if(@@(N)>0x1){}.else{gc}"因此,大多数情况下它是正确的,但由于windbg将其视为有符号整数,上述条件断点始终为假,因为@@(N)始终计算为负数。如何比较2个内存地址的数量? 最佳答案 kd
我正在研究Windows系统编程第4课中的一些示例。使用windbg.exe我正在尝试检查传递给函数(GetCurrentDirectoryA)的参数。以下是来源。int_tmain(intargc,LPTSTRargv[]){/*BuffertoreceivecurrentdirectoryallowsfortheCR,LFattheendofthelongestpossiblepath.*/TCHARpwdBuffer[DIRNAME_LEN];DWORDlenCurDir;lenCurDir=GetCurrentDirectory(DIRNAME_LEN,pwdBuffer);i
我的工作流程如下。配置WinDbg的符号文件路径和源代码文件路径。打开一个源代码文件以供稍后调试。按F9,尝试在源代码中设置断点。WinDbg弹出一个错误对话框,提示“在修改断点之前必须停止调试对象。”谁能告诉我为什么?我的WinDbg版本是6.11.0001.404(X86),WindowsXP64位。我正在从非常复杂的运行时系统中调试一个dll。我写了一个简单的exe,点击打开。打开后,我立即打开源代码文件并设置一个断点。它适用于这种情况! 最佳答案 提示在错误中,“Debuggeemustbestoppedbeforebrea
我有一个简单的C++服务,它从文件中读取文本并通过网络发送它。随着时间的推移,此服务的内存消耗会在客户站点增加。在QA测试中没有观察到此类行为。我想知道是否可以在任何给定时间提取内存中的所有字符串对象。是否可以将此过程自动化,以便我在不同时间从客户那里获取转储,并找出每次内存的大小或内容并比较结果。 最佳答案 对于C++,答案是否定的(在C#中是另一回事)。在C++世界中,如果您怀疑有泄漏,您可能希望在“泄漏”发生之前在进程上启用用户模式堆栈跟踪(+ustingflags.exe)。发生泄漏后,获取进程的转储并进行检查。要检查它(我
我还没有找到在windbg中调试RELEASE模式二进制文件或转储的好资源。据我了解,启用编译器优化后,调试会变得更加受限。但有时我别无选择——例如,对不可重现的问题进行故障转储分析。如果有一些文章描述发布二进制文件的可能性(或注意事项),那就太好了。有人知道这样的资源吗?我正在寻找类似this的内容,但有更多的细节。我希望AdvancedWindowsDebugging会有一些东西,但没有这样的运气。 最佳答案 第一条规则:保留来自您发布的每个构建的所有pdb:来自exe和您生成的任何其他dll第二条规则:尝试获得重现步骤,因为能
我正在使用windbg分析来自转储文件来源的单独计算机上的内存转储。在该工具的命令行中,我输入了以下内容:.loadbyw3corew3core这是错误:调用LoadLibrary(c:\windows\system32\inetsrv\w3core.dll)失败,Win32错误0n126“找不到指定的模块。”请检查您的调试器配置和/或网络访问权限更新:我创建转储文件的进程是w3wp.exe。我认为这是针对IIS的。这是IIS工作进程。所以,w3core.dll一定与IISWorkerProcess有关。为了回顾我的步骤,我使用了调试诊断工具来监视计算机A上特定进程的崩溃。(计算机A正
一年多以前,我已经使用WinDbg和DebugDiag来查找我们在Java中使用的JNInativeDLL中的内存泄漏。现在我正在寻找线程句柄泄漏。我使用ProcessExplorer创建了一个内存转储,并尝试在DebugDiag中对其进行分析,但我得到的只是脚本错误:我也尝试过WinDbg,但它无法再附加到进程。我总是收到错误消息“dbghelp.dll的版本与调试器不匹配”:(“UnbekannterFehler”的意思是“未知错误”)我卸载了DebugDiag和WindowsSDK,然后下载了最新版本并安装了WindowsSDK8和DebugDiag1.2(x86)。问题保持不变
我想确定eax寄存器实际指向[Stack或Heap]的位置。在下面的windbgoutput!addressoutput中显示它未分类。0:014>reax=01198ce8ebx=00000000ecx=01198bf8edx=00000000esi=01196ed8edi=01198160eip=0710a501esp=01e8fdc8ebp=01e8fe28iopl=0nvupeiplnznaponccs=001bss=0023ds=0023es=0023fs=0038gs=0000efl=00000202libmp4v2!MP4GetVideoProfileLevel+0x3b
如何为特定内存范围设置访问中断?ba只接受一个地址。除非没有其他办法,否则我宁愿不写脚本。 最佳答案 您必须开发一个插件才能在Windbg中执行此操作。Thispage描述了开发此类插件的逻辑。或者您可以尝试Ollydbg,因为最新版本能够为内存范围设置断点。 关于windows-内存范围内的Windbg中断,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/20168228/
尝试在Win7下测试一个新的CSP。将启动配置设置为允许内核调试,运行WndDbg并选择file:kerneldebug并设置为本地。尝试将signtool与我的新CSP一起使用仍然会导致签名失败检查。环境是:OSName:MicrosoftWindows7HomePremiumOSVersion:6.1.7601ServicePack1Build7601OSManufacturer:MicrosoftCorporationOSConfiguration:StandaloneWorkstationOSBuildType:MultiprocessorFreeSystemModel:Del