【发布时间】:2019-03-27 17:46:34
【问题描述】:
- 可执行文件已加载并在 WinDbg 中运行
- 它在某些地址加载它需要的模块
- 在此会话中检索到的断点集/跟踪取决于这些地址
- 当为同一个可执行文件启动另一个会话时(取决于代码执行路径更改 dll 依赖顺序,还是某些不确定的加载程序行为?)模块现在被加载到不同的地址。
如果有一种方法可以指示 windbg/loader 在给定地址加载尚未加载的模块,那将会很有帮助。这将使某些脚本/文本比较更容易。
是的,我确实意识到,例如,应该首选设置相对于符号名称的断点而不是使用固定地址,但是能够“重现”参考调试环境肯定具有一定的优势。
假设我们正在处理 3rd 方 DLL(我无法使用预定义的加载地址重新编译),有没有办法做到这一点?
我很高兴看到.reload 命令有一个地址参数,看起来它完全符合我的要求。然而,即使该命令会加载模块,当程序继续运行时(并且需要实际的 dll 加载),它仍会继续为同一模块加载另一个副本(?),并给出如下警告:
WARNING: moduleX_1be0000 overlaps moduleX
所以它并没有像我预期的那样真正起作用,所以这个问题!
【问题讨论】:
标签: windbg