【问题标题】:gflags doesn't work in 64 bit Windows 7, but 32 bit environmentgflags 不适用于 64 位 Windows 7,但 32 位环境
【发布时间】:2013-09-21 14:52:38
【问题描述】:

我正在尝试在 64 位 Windows 7 上调试 32 位程序。

所以我使用 gflags 为该应用设置调试器。我填写了应用程序的路径,以及调试器的路径。但是当我启动应用程序时,WinDBG 没有运行。

相同的配置适用于 32 位 Windows 7。

那么,在 64 位环境下调试 32 位应用程序是不可能的吗?

【问题讨论】:

  • 是的,你可以调试,你可以使用.effmach x86从WinDbg 64位设置有效机器。是不是路径不对?
  • 嗨@EdChum我的意思是当我双击应用程序时,我想启动一个调试程序的windbg会话,而不是运行应用程序。所以我认为在 windbg 中运行的命令可能无济于事
  • @EdChum 路径是正确的,当我点击Launch 时它开始
  • 您能否检查以下注册表项是否正确:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageFileName\Debugger,它应该列出 Windbg.exe 的路径,除此之外,我不确定还有什么要检查的,因为 gflags 会将这些注册表键入值,然后根据 reg 值执行适当的操作。有更多细节here,但这可能是一个限制或错误
  • 你有没有解决这个问题,因为我遇到了完全相同的问题..

标签: debugging windbg gflags


【解决方案1】:

对我来说,这一直有效,即使我使用了“错误”的架构 gflags。

但是 Windbg 必须在 PATH 中,或者在将调试器指定给 gflags 时必须包含路径。

【讨论】:

  • 那么如果windbg不在%PATH%中,Windows会直接启动应用吗?
  • 我认为会有错误信息,注意:路径不应该在图像文件名中。
  • 等等,我才想起来我使用了调试器和应用程序的绝对路径
  • IIRC,我认为 IFEO 不喜欢调试器路径中的空格。也许尝试复制到没有空格的路径?但是你说它可以在 32 位 Win7 上运行,所以空格可能不是问题。
  • 使用进程监视器查看注册表和文件系统方面的实际情况。
【解决方案2】:

更新

这是一个老问题。旧版本的 gflags 用于将设置存储在以下位置之一:

HTML\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

HTML\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

根据您为 gflags.exe 选择的架构,它会影响 64 位或 32 位进程。

显然在某个时候(感谢@Thomas Weller 指出),Microsoft 更改了 gflags 行为,现在(2016 年 11 月)当前版本的 gflags.exe 写入 32 位和 64 位注册表位置,无论架构。

这有点问题,因为我曾经使用将 32 位调试器附加到 32 位进程,将 64 位调试器附加到具有相同进程名称的 64 位进程。现在我不能为此使用 gflags。但是解决方法是直接修改Image File Execution Options 下的注册表项。

旧答案

gflags.exe 的处理器架构实际上很重要。如果您使用 64 位版本的 Windows 调试工具并从那里启动 gflags.exe,它将影响 64 位应用程序的行为。同样,如果您使用 32 位版本的 Windows 调试工具并启动 gflags.exe,它会影响 32 位应用程序。

32 位和 64 位版本可以并排安装。密切关注您正在调试的应用程序的位数,并使用与调试器/工具相同的架构。

【讨论】:

  • 我已经安装了 Windbg 的 x86 版和 x64 版,并使用每个版本的 gflags 为该 32 位应用程序设置了调试器。还是不行;-(
  • 这是错误的。您可以使用 Process Monitor 检查两个版本是否访问相同的注册表项。另外:在 64 位中创建一个设置,然后启动 32 位版本并输入相同的可执行文件名称,设置将在那里。
  • @ThomasWeller,请查看我的更新以了解 gflags 行为的变化。
猜你喜欢
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 2013-06-08
相关资源
最近更新 更多