【问题标题】:Unable to set a bp on LoadLibraryW无法在 LoadLibraryW 上设置 bp
【发布时间】:2017-02-15 04:28:06
【问题描述】:

我正在尝试在 kernel32!LoadLibraryW 或 LoadLibraryA 上设置断点。 我不断得到:

无法解决“kernel32!LoadLibraryW”处的错误

我的符号路径设置为:srv*https://msdl.microsoft.com/download/symbols

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 这很奇怪。它适用于 Visual Studio 调试器,但不适用于 WinDBG。
  • 它适用于 Windows 7 上的 WinDbg 10.0.15003.1001(x86 和 x64)。你有哪个版本和操作系统?您确定 Internet 连接正常吗?尝试在浏览器中打开msdl.microsoft.com/download/symbols/pingme.txt 并使用网络工具查看它是否返回HTTP 200。尝试!sym noisyld*。那么lm m kernel* 的输出显示了什么?仅当 HTTPS 在符号路径中不起作用时才尝试 HTTP,
  • 您可以使用 x wildcardasteriskhere!load*w 找到它并复制粘贴符号名,例如 bu/bp paste "cond if needed"
  • 如果您想跟踪 DLL 图像加载,请在我的配置文件 (stackoverflow.com/a/30289933/1466046) 中使用 WPR,它会捕获本机代码和托管代码的图像加载事件堆栈。在 WPA 中打开 ETL,加载符号并拖放图像图以分析窗格并扩展您要跟踪的进程的堆栈。

标签: debugging windbg


【解决方案1】:

改为在 kernelbase.dll 中设置断点。

【讨论】:

    【解决方案2】:

    我相信 WinDbg 在解析地址时使用符号名称而不是导出的函数名称。这会导致转发到 ntdll.dll 和 kernelbase.dll 的某些函数出现问题。

    有时您可以在设置断点时将“Stub”附加到函数名称中,有时您只需知道该函数实际上是在较低级别的 .dll 中实现的,并在该 .dll 中的函数上设置断点。您还可以使用制表符完成和 *!functionname* 之类的名称找到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2017-08-14
      • 2020-05-17
      • 1970-01-01
      相关资源
      最近更新 更多