Debugging gflags不';不能在64位Windows 7中工作,但在32位环境中工作

Debugging gflags不';不能在64位Windows 7中工作,但在32位环境中工作,debugging,windbg,gflags,Debugging,Windbg,Gflags,我正在尝试调试64位Windows7上的32位程序 因此,我使用gflags设置该应用程序的调试器。我填写应用程序的路径和调试器的路径。但当我启动应用程序时,WinDBG不会运行 相同的配置适用于32位Windows 7 那么,在64位环境下调试32位应用程序是不可能的吗?UPDATE 这是一个老问题。旧版本的gflags用于将设置存储在以下位置之一: HTML\SOFTWARE\Microsoft\windowsnt\CurrentVersion\Image文件执行选项 或 HTML\SOFT

我正在尝试调试64位Windows7上的32位程序

因此,我使用gflags设置该应用程序的调试器。我填写应用程序的路径和调试器的路径。但当我启动应用程序时,WinDBG不会运行

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

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

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

HTML\SOFTWARE\Microsoft\windowsnt\CurrentVersion\Image文件执行选项

HTML\SOFTWARE\WOW6432Node\Microsoft\windowsnt\CurrentVersion\Image文件执行选项

根据您为gflags.exe选择的体系结构,它将影响64位或32位进程

显然,在某种程度上(感谢@Thomas Weller指出),微软改变了gflags的行为,现在(2016年11月)gflags.exe的当前版本写入32位和64位注册表位置,而不考虑体系结构

这是一个问题,因为我曾经使用将32位调试器附加到32位进程,将64位调试器附加到具有相同进程名称的64位进程。现在我不能用gflags来做这个。但是,解决方法是直接在
图像文件执行选项
下修改注册表项

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


32位和64位版本可以并排安装。请密切关注您正在调试的应用程序的比特度,并使用相同的调试器/工具体系结构。

对我来说,这一直有效,即使我使用了“错误”的体系结构

但是,Windbg必须位于路径中,或者在将调试器指定为gflags时必须包含路径


是的,您可以调试,您可以使用
.effmach x86
从WinDbg 64位设置有效机器。有没有可能路径不正确?Hi@EdChum我的意思是,当我双击应用程序时,我想启动一个windbg会话来调试程序,而不是运行应用程序。因此,我认为在windbg中运行的命令可能不会help@EdChum路径是正确的,当我点击
Launch
it start时,是否可以检查以下注册表项是否正确:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageFileName\Debugger
,它应该列出Windbg.exe的路径,除此之外,我不确定还要检查什么,因为gflags将这些注册表项值放入其中,然后根据reg值执行相应的操作。有更多的细节,但这可能是一个限制或错误。你有没有解决过这个问题,因为我遇到了完全相同的问题。我已经安装了Windbg的x86版和x64版,我为该32位应用程序设置了调试器,每个版本的gflags。仍然不起作用-(这是错误的。您可以使用Process Monitor检查两个版本是否访问相同的注册表项。另外:创建一个64位的设置,然后启动32位的版本并键入相同的可执行文件名,设置就会在那里。@ThomasWeller,请查看我的更新以了解gflags行为的更改。因此,如果windbg不在%PATH中,Windows将使用%s。)直接启动应用程序?我想会出现一条错误消息,注意:路径不应该出现在映像文件名中。等等,我刚刚记得我使用了调试器和appIIRC的绝对路径,我认为IFEO不喜欢调试器路径中的空格。也许可以尝试复制到没有空格的路径?但你说它在32位Win7上工作,所以aybe空间不是问题。请使用进程监视器查看注册表和文件系统的实际情况。