获取
看一下 pageheap 针对的是什么问题? 堆调试工具——pageheap的使用和原理分析
pageheap 和 gflags 什么关系?前者被包含到了后者中。
This version of GFlags includes the functionality of PageHeap (pageheap.exe), a tool that enables heap allocation monitoring in Windows.
如何安装 gflags?安装 WinDbg
GFlags is included in the Debugging Tools for Windows 10 (WinDbg).
如何 获取 WinDbg?
在安装过程中,通过 win 10 sdk 的方式(无论是通过 msvc2019 还是直接安装 win10 sdk)都没有成功。
最终单独安装的 Windows Driver Kit (WDK)
Step 2: Install WDK for Windows 10, version 1903
使用
PageHeap / GFlags 使用,只涉及两三条命令。使用Gflags来检测heap问题
1 | #配置正常页堆: |
然后启动 myapp.exe 似乎就能精准定位到异常位置了。可是我在 msvc 中运行 release 只收获了“应用程序无法正常启动(0xc0000142)”,底部“输出框”中打印
程序“[1896] test.exe”已退出,返回值为 -1073741502 (0xc0000142) ‘DLL Initialization Failed’。
中间曲折的尝试不再絮说,来看 GFlags 的一个参数 /debug 描述
By default, this parameter uses the NTSD debugger with the command line
ntsd -g -G -x
and with page heap enabled, but you can use the DebuggerCommand variable to specify a different debugger and command line.
关键就在于“调试器”是有很多种类的,windows 上并非只有 visual studio !
没能够掌握如何通过命令行指定 vsjitdebugger.exe,只能通过 gflags-gui
Windbg的gflags.exe – Attach调试利器
Windbg的gflags.exe调试堆栈溢出,访问越界等问题
延伸
WinDbg
- Debugging Using WinDbg
- Debugging Using KD and NTKD
- Debugging Using CBD and NTSD