首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GFlags -命令行

GFlags -命令行
EN

Stack Overflow用户
提问于 2016-02-04 19:32:42
回答 1查看 5.2K关注 0票数 2

我想启动一个包含命令行的进程。在每次启动过程时,我希望使用g阻击来启用页面堆,并允许windbg附加到进程。

如何将命令行参数添加到g阻隔UI中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-07 22:18:23

你不知道。你把不相关的事情混在一起了。

PageHeap

为了启用堆验证 ("PageHeap"),您可以使用GFlags实用工具来设置您想要的配置,或者使用GUI或者传递给它批准的命令行参数(参见GFlags和PageHeap )。无论哪种方式,此设置都是您定义的所有二进制文件的全局设置。

调试

要在每次启动调试器下运行该程序,您可能希望在Image执行选项下使用调试器设置。您也可以使用GFlags设置它。在Image选项卡(在指定EXE名称和点击选项卡之后)勾选调试器复选框并输入调试器的路径。

这种机制的工作方式是,(在CreateProcess中的某个地方)有一个测试,测试是否为您试图运行的程序设置了IFEO\Debugger,如果设置了它,则执行Debugger值中的任何设置**,并传递原始命令行*。

所以如果你

代码语言:javascript
复制
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\foo.exe\Debugger

要成为C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe,然后尝试执行C:\Users\d_blk\Desktop\foo.exe -param 1 -param 2,Windows将运行

代码语言:javascript
复制
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe C:\Users\d_blk\Desktop\foo.exe -param 1 -param 2

WinDbg在foo.exe之后将所有内容传递给目标程序(如注意到的这里 )。

因此,您可以看到,没有必要将命令行参数设置到您正在调试的程序的任何地方,而是在运行它的任何地方。

PageHeap和IFEO\Debugger之间的唯一连接是可以通过GFlags实用程序来控制它们。

注意事项

注意所有使用IFEO\Debugger的常用警告。例如:

  • 调用方从CreateProcess获得WinDbg的句柄,而不是目标进程(和进程ID等)。
  • 非默认STARTUPINFO参数中的任何信息都适用于WinDbg,而不是目标进程。我想lpEnvironment也是一样的。

如果这对你没什么影响的话。如果是的话,另一种方法可能是在程序开始时添加一个未处理的异常,并将WinDbg设置为验尸调试器(AeDebug)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35209951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档