草庐IT

DEBUGGING

全部标签

c++ - 内存模块是否映射到进程的虚拟空间?

我在Windows上看到函数EnumProcessModules返回为指定进程加载的多个模块(其中一些应该是系统dll,如guard32.dll、version.dll等。)我的问题是:这些模块是否映射到进程的虚拟空间?我可以从主应用程序代码跳转到位于这些模块之一的指令(当然知道地址)吗? 最佳答案 是的,DLL应该映射到进程虚拟地址空间。如果页面中的代码尚未执行,则映射可能不会得到真实物理页面的支持,并且当然执行“随机”代码位而没有正确的初始化或设置代码以正确执行(例如调用处理函数使用一些需要在另一个函数中分配的数据)显然会在一些

windows - WinDbg - 将字符串参数与内存中的字符串进行比较

我需要将作为参数传递给WinDbg的字符串与内存中的字符串进行比较。如何实现?例如,字符串位于加载的PE中的特定偏移处。所以,我可以通过执行da/c100轻松读取字符串.但是,我如何使用这个字符串,将它与arg1进行比较?,在WinDbg脚本中,使用.if?(和$SPAT(),我猜)我试图读取da的输出命令进入别名或用户定义的寄存器,但我没有成功。 最佳答案 您可以使用as/c将字符串分配给别名:0:012>as/cHello.printf"%ma",061300000:012>.echo@"${Hello}"Helloworld然

c# - 调试日志弄乱了我的代码

我正在尝试将调试日志添加到我的C#.net代码中。但它弄乱了我的代码,它看起来像hell。有什么东西可以自动记录每个代码及其值吗?现在看起来像这样#ifDEBUGdebuglogger("Thefunctionstarted");#endifsomeCode1();#ifDEBUGdebuglogger("SomeCode1Finished");#endifsomeCode2();#ifDEBUGdebuglogger("SomeCode2Finished");#endifsomeCode3();#ifDEBUGdebuglogger("SomeCode3Finished");#end

windows - 区分大小写 Common Lisp

我正在尝试制作sbcl区分大小写但没有成功。有谁知道问题可能是什么?它mentionshere和here这是可能的。我在跑(setf(readtable-case*readtable*):invert)(defunhi()"Hi!")(HI)(HI)"Hi!"repl的内部如下所示。"C:\ProgramFiles\SteelBankCommonLisp\1.2.15\sbcl.exe"--core"C:\ProgramFiles\SteelBankCommonLisp\1.2.15\sbcl.core"编辑:因此,如果您在CommonLisp中调用不区分大小写的函数,它会恢复到对程序

c++ - 发现在我的 C++ 应用程序中创建线程的原因及其作用的最佳方法是什么?

我正在审核在Windows上运行的C++应用程序,该应用程序是针对多线程调试DLL编译的。它有很多可以产生线程的第三方依赖项。我需要跟踪每个线程存在的原因以及它分配了多少堆栈空间。有什么好方法可以追溯到线程创建的开始,以便我可以看到线程的生成位置?更新:我应该指出,我有整个应用程序的源代码,不依赖于Microsoft依赖项。然而,许多线程的调用堆栈仅存在于操作系统附带的库中,例如ntdll.dll和kernel32.dll。 最佳答案 您可以使用WindowsPerformanceToolkit查看ThreadCreate事件。在V

windows - 如何从 Windows 应用程序内存中读取一些数据?

我有一个应用程序,可以显示一些数据。我需要附加到这个应用程序的进程,在内存中找到我需要的数据(实际上是一个数字),并将其保存在某个地方。这个应用程序似乎没有使用标准的Windows控件,所以事情不会像使用AutoIt或类似的东西读取控件数据那么简单。目前我是一名自学数据库的人,对Windows应用程序调试的了解很浅。甚至不确定我是否足够正确地问我的问题。那么,您能否给我一些入门指南,例如,我应该首先阅读什么,以及我应该遵循的一般方向?谢谢。 最佳答案 要读取其他应用程序的内存,您需要根据OpenProcess打开进程至少具有PROC

c++ - Windows 调试 Api - 分离不起作用

我在附加到目标进程时创建的线程中运行我的事件循环。我在分离之前所做的只是调用一个函数来清除调试并调用DebugSetProcessKillOnExit等,但是得到错误的返回值我认为它们必须从我创建的线程中调用。所以我做到了,现在没有错误,但目标进程只是在我退出/分离时退出。目前我检查事件循环中的bool值以检查我是否应该分离(有更好的解决方案吗?)然后执行以下操作:pEng->ClearHardwareBreakpoints();DebugSetProcessKillOnExit(FALSE);ContinueDebugEvent(pEng->pId,pEng->tId,DBG_CON

windows - 内核调试: Windows 7 hangs at boot time

有时,我会遇到Windows在启动时等待内核调试器被附加的情况。您会看到“Windows正在启动”文本,但尚未看到Logo。如果我现在附加调试器,就会播放Windows7的Logo动画。随后Logo开始闪烁。在此阶段,引导过程不再进行。CPU使用率降至最低。我通常会等待几分钟,但什么也没有发生。这不会一直发生。但是,如果发生这种情况,VM重置将无济于事。我需要使用启动修复来解决这个问题。不幸的是,这需要永远。除了运行启动修复,我还能做什么?提前致谢! 最佳答案 要解决您遇到的问题,您只需在启动过程中按F10。并删除/debug和相关

windows - C++ : visual studio 2008/2010 "The breakpoint will not currently be hit." issue

我在VisualStudio2008(win764位)中有一个链接到静态库的程序。我遇到“当前不会命中断点。没有为该文档加载任何符号。”在发布/Debug模式下,静态库代码中的断点问题(可执行代码的断点是可以的)。我已经阅读并尝试了其他SO问题中的解决方案,但没有任何帮助。我的试验包括手动删除所有obj和pdb文件;重启VS和电脑;安装与该问题相关的Microsoft修补程序;将解决方案移植到VS2010。如果有任何其他建议,我将不胜感激......更新经过2天的徒劳努力(包括重新创建解决方案),问题消失了。我在它修复之前所做的步骤是在同一个解决方案中编辑另一个程序的代码,加载同一个静

windows - 如何将Softice窗口中显示的数据转为文本文件

我无法将软件中的信息复制到磁盘/文件中。我知道IceExt,但每次我执行将屏幕转储到磁盘的命令(例如“!DumpScreen\??\c:\test.raw”)时,它都会使我的系统完全崩溃。当我尝试用鼠标复制时,光标只能复制一行。我已经通读了软件手册。我只需要一种从softice检索数据的方法。任何帮助,将不胜感激。我正在使用xp专业版。 最佳答案 事实证明,完成此操作不需要任何插件。使用来自softice的命令“ucs:eipL1000”。然后,您将在命令窗口中看到softice屏幕中数据的副本。地址cs:eip(当前EIP)处的u