1

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

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

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

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

4

2 回答 2

2

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

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

在此处输入图像描述

于 2013-09-23T08:02:09.193 回答
0

更新

这是一个老问题。旧版本的 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 指出),微软改变了 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 位版本可以并排安装。密切关注您正在调试的应用程序的位数,并使用与调试器/工具相同的架构。

于 2013-09-21T21:54:29.803 回答