我跟随Tess Ferrandez的博客,在WinDbg中设置自定义主题.
我也开始使用-c".cmdtree c:\ mycmdtree.txt"自动启动WinDbg
这正确地打开我的cmdtree文件作为命令窗口,但我不能让它正确停靠.问题似乎是"命令"窗口只能在打开DMP文件后打开,但打开DMP文件会将您切换出"基础"工作区,因此不会保存对工作区的任何更改.
有任何想法吗?
小智 7
这个简单的请求变得非常复杂.WinDbg的窗口位置保存在工作区中.WinDbg有几个默认工作区:
对于任何给定类型的调试(即实时用户模式或事后转储分析),您通常最终会得到Base +您的调试类型的组合.
如果打开转储文件,则获得BASE + Per转储文件如果您使用用户模式调试,则获得BASE +用户模式如果您使用内核调试x64机器,则获得BASE +内核模式+ x64
您在任何给定模式下所做的所有更改都将保存在最后重叠的工作空间中.这意味着如果我们打开转储文件(因此我们是Base + Per转储),对设置的任何更改都将保存在此转储的工作空间中.
除了内置工作空间及其所有组合之外,还有命名(客户)工作空间.这些是当您转到文件>保存工作区时,并提供一个名称来保存您在使用-W命令行参数启动Windbg时可以启用的所有设置.
回到你的问题.我怎样才能打开.cmdtree?在基础工作区中,您不能.许多窗口仅在调试器未处于休眠状态时(在其BASE工作空间中)才可用.一旦调试器进入任何活动状态,就可以使用这些窗口.
您遇到的问题是,为了按照您希望的方式设置所有内容,您必须让调试器处于活动状态(exe打开,转储打开,实时调试)以及何时保存窗口布局,它还将保存您打开,转储或正在进行的实时调试的exe.
你最好的办法就是做你刚才做的事情,就是在注册表中使用-c(HKEY_CLASSES_ROOT\WinDbg.DumpFile.1\shell\Open\command).这将允许您只需双击转储并在每次进行转储分析时获取这些命令行选项.然后,您可以创建windbg的快捷方式,该快捷方式也包含命令行,因此这些设置将应用于您执行的其他类型的调试.
这是我在上面的regkey中的命令行:
"c:\ debuggers\x64\windbg.exe"-z"%1"-Q -W Internal -c".load winde.dll; .enable_unicode 1; .ignore_missing_pages 1; .logopen/t C:\ Users\jasone\Logs\debug.log; aS .p.process/p/r; aS .t .thread/p/r; aS!p!process; aS!t!thread; aS .f .frame; aS dv dv/V/i/t; aS .f .frame"
这是做什么的?
启动调试器,附加到转储文件,没有提示保存工作区设置,打开我的"内部"工作区(我创建的命名工作区),并运行这些命令来加载调试器扩展,设置首选项,并创建使我的生活更轻松的别名.
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |