2010-04-16 29 views
5

我跟着Tess Ferrandez' blog在WinDbg中设置自定义主题。如何在WinDbg启动时创建“.cmdtree”窗口?

我也开始自动启动的WinDbg -c“.cmdtree C:\ mycmdtree.txt”

这正确打开我的cmdtree文件作为一个命令窗口,但我不能得到正常的对接。问题似乎是,只有打开DMP文件后才能打开“命令”窗口,但打开DMP文件会将您切换出“基本”工作区,因此不会保存对工作区的任何更改。

任何想法?

+0

您是否实际上使用提供的答案管理设置Window对接?我有两个问题:a)它停靠,但不在我喜欢的位置; b)它总是停靠另一个窗口 – 2014-01-08 07:19:53

回答

7

这个简单的请求变得非常复杂。 WinDbg的窗口位置保存在工作区中。 WinDbg中有几个默认工作区:

  • 基地 - 这是你开始调试之前所使用的工作空间(无单向开放,没有exe文件打开,不附任何东西)
  • 每转储文件 - 每个甩了你打开,您有该文件的工作区
  • 每个可执行文件 - 对于您打开的每个可执行文件。
  • 用户模式 ​​- 当你活着的用户模式调试使用
  • 内核模式 - 当你在内核模式调试
  • 每台机器架构中使用 - 1 64,1 86,& 1 IA64
  • 远程 - 当你是远程调试

对于任何给定类型的调试使用(即现场用户模式或事后转储分析),你通常的基地+你的类型的设置组合结束的调试。

如果你打开转储文件,你会得到每转储文件 BASE +如果你住用户模式调试,你会得到BASE +用户模式 如果你住的内核调试64机,你会得到BASE +内核级模式+ x64

您在任何给定模式下所做的所有更改都保存在上次重叠的工作区中。这意味着如果我们打开一个转储文件(所以我们是Base + Per dump),任何对设置的更改都会保存在工作区中,用于转储。

除了内置工作区及其所有组合外,还有命名(客户)工作区。当你进入文件>保存工作区,并提供一个名称来保存你可以使用-W命令行参数启动Windbg时启用的所有设置。

回到你的问题。我怎样才能打开.cmdtree?在基础工作空间中,你不能。许多窗口只有在调试器不处于休眠状态(在其BASE工作区中)时才可用。一旦你使调试器进入任何活动状态,那么这些窗口都可用。

你碰到的问题是,为了按照你想要的方式设置一切,你必须让调试器处于活动状态(一个exe打开,一个转储打开,现场调试),当你去保存你的窗口布局,它也将保存你打开的哪个exe文件,或者转储,或者正在进行的实时调试。

最好的办法是只做你刚刚做的,就是在注册表中使用-c(HKEY_CLASSES_ROOT \ WinDbg.DumpFile.1 \ shell \ Open \ command)。这将允许您只需双击转储并在每次执行转储分析时都获取这些命令行选项。然后,您可以创建一个windbg的快捷方式,它也包含了命令行,因此这些设置将应用于其他类型的调试。

这里是从上面的REGKEY我的命令行:

“C:\调试器\ 64 \ WINDBG.EXE” -z “%1” -Q -W内部-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!过程; aS!t!thread; aS .f .frame; aS dv dv/V/i/t; aS .f .frame“

这是干什么的?

启动调试器,附加到转储文件,NO提示保存工作区设置,打开我的“内部”工作区(我创建的命名工作区),并运行这些命令加载调试器扩展,设置首选项和创建别名让我的生活更轻松。