调试命令的总结,挺有用的,所以转过来了。调试的时候,可以在VS2005的Command Window中输入调用。
这是我所转的原帖的地址:http://www.cppblog.com/chefZ/archive/2008/12/05/68612.html
以 Unicode 形式列出内存
>du 0x056769d0 <=== du 以 Unicode 形式列出内存 0x056769d0 内存以起始位址
原稿: http://msdn.microsoft.com/en-us/library/c338aexd.aspx
[摘]“命令”窗口用于直接在 Visual Studio 集成开发环境 (IDE) 中执行命令或别名。可以执行菜单命令和不在任何菜单上显示的命令。若要显示“命令”窗口,请从“视图”菜单中选择“其他窗口”,再选择“命令窗口”。
以下是包含可在 Visual Studio 中使用的预定义命令别名的列表。
命令名 | 别名 | 完整名称 |
打印 | ? | Debug.Print |
快速监视 | ?? | Debug.Quickwatch |
添加新项目 | AddProj | File.AddNewProject |
别名 | Alias | Tools.Alias |
“自动”窗口 | Autos | 调试.自动窗口 |
“断点”窗口 | bl | 调试.断点 |
切换断点 | bp | Debug.ToggleBreakPoint |
“调用堆栈”窗口 | CallStack | 调试.调用堆栈 |
清除书签 | ClearBook | 编辑.清除书签 |
关闭 | Close | File.Close |
关闭所有文档 | CloseAll | Window.CloseAllDocuments |
全部清除 | cls | Edit.ClearAll |
“命令”模式 | cmd | 视图.命令窗口 |
查看代码 | code | 视图.查看代码 |
列出内存 | d | Debug.ListMemory |
以 ANSI 形式列出内存 | da | Debug.ListMemory /Ansi |
列出内存(单字节格式) | db | Debug.ListMemory /Format:OneByte |
以 ANSI 形式列出内存(四字节格式) | dc | Debug.ListMemory /Format:FourBytes /Ansi |
列出内存(四字节格式) | dd | Debug.ListMemory /Format:FourBytes |
删除到行首 | DelBOL | Edit.DeleteToBOL |
删除到行尾 | DelEOL | Edit.DeleteToEOL |
删除水平空白 | DelHSp | 编辑.删除水平空白 |
视图设计器 | designer | 视图.视图设计器 |
列出内存(浮点格式) | df | Debug.ListMemory /Format:Float |
“反汇编”窗口 | disasm | 调试.反汇编 |
列出内存(八字节格式) | dq | Debug.ListMemory /Format:EightBytes |
以 Unicode 形式列出内存 | du | Debug.ListMemory /Unicode |
计算语句 | eval | Debug.EvaluateStatement |
退出 | Exit | 文件.退出 |
格式化选定内容 | format | 编辑.格式化选定内容 |
全屏 | FullScreen | 视图.全屏 |
开始 | g | 调试.启动 |
转到 | GotoLn | 编辑.转到 |
转到大括号 | GotoBrace | 编辑.转到大括号 |
F1帮助 | Help | 帮助.F1帮助 |
“即时”模式 | immed | Tools.ImmediateMode |
将文件作为文本插入 | InsertFile | Edit.InsertFileAsText |
列出调用堆栈 | kb | Debug.ListCallStack |
转换为小写 | Lcase | 编辑.转换为小写 |
剪切行 | LineCut | 编辑.剪切行 |
删除行 | LineDel | 编辑.删除行 |
列出成员 | ListMembers | 编辑.列出成员 |
“局部变量”窗口 | Locals | 调试.局部变量 |
日志命令窗口输出 | Log | Tools.LogCommandWindowOutput |
命令窗口标记模式 | mark | 工具.命令窗口标记模式 |
“内存”窗口 | Memory Memory1 | 调试.内存1 |
内存窗口 2 | Memory2 | 调试.内存2 |
内存窗口 3 | Memory3 | 调试.内存3 |
内存窗口 4 | Memory4 | 调试.内存4 |
设置基数 | n | Debug.SetRadix |
显示Web浏览器 | nav navigate | View.ShowWebBrowser |
下一书签 | NextBook | 编辑.下一书签 |
新建文件 | nf | 文件.新建文件 |
新建项目 | np NewProj | 文件.新建项目 |
打开文件 | of Open | 文件.打开文件 |
打开项目 | op | File.OpenProject |
折叠到定义/停止大纲显示 | OutlineDefs StopOutlining | 编辑.折叠到定义 |
逐过程 | p | 调试.逐过程 |
参数信息 | ParamInfo | 编辑.参数信息 |
跳出 | pr | 调试.跳出 |
上一书签 | PrevBook | 编辑.上一书签 |
打印文件 | | 文件.打印 |
“属性”窗口 | props | 视图.属性窗口 |
停止 | q | 调试.停止调试 |
重复 | redo | 编辑.重复 |
“寄存器”窗口 | registers | 调试.寄存器 |
运行到光标处 | rtc | 调试.运行到光标处 |
保存选定项 | save | 文件.保存选定项 |
全部保存 | SaveAll | 文件.全部保存 |
另存为 | SaveAs | File.SaveSelectedItemsAs |
“仅显示脚本”视图 | ScriptOnly | View.ShowScriptOnly |
外壳程序 | shell | Tools.Shell |
停止在文件中查找 | StopFind | Edit.FindInFiles /stop |
交换定位点 | SwapAnchor | 编辑.交换定位点 |
逐语句 | t | 调试.逐语句 |
制表符替换空格 | tabify | 编辑.制表符替换空格 |
“任务列表”窗口 | TaskList | 视图.任务列表 |
“线程”窗口 | Threads | 调试.线程 |
水平平铺 | TileH | Window.TileHorizontally |
垂直平铺 | TileV | Window.TileVertically |
切换书签 | ToggleBook | 编辑.切换书签 |
“工具箱”窗口 | toolbox | 视图.工具箱 |
列出反汇编 | u | Debug.ListDisassembly |
转换为大写 | Ucase | 编辑.转换为大写 |
取消 | undo | 编辑.取消 |
空格替换制表符 | Untabify | 编辑.空格替换制表符 |
“监视”窗口 | Watch | 调试.监视N |
切换自动换行 | WordWrap | 编辑.切换自动换行 |
列出线程 | ~ | Debug.ListThreads |
若要检查变量 varA 的值,请使用“打印”命令:
>Debug.Print varA |
问号 (?) 是 Debug.Print 的别名,因此此命令还可以写为:
>? varA |
此命令的这两种版本都将返回变量 varA 的值。
输入命令
大于号 (>) 作为新行提示符出现在“命令”窗口的左边缘。使用向上键和向下键可滚动显示以前发出的命令。
任务 | 解决方案 | 示例 |
计算表达式的值。 | 表达式以问号 (?) 开始。 | ? myvar |
切换到“即时”窗口。 | 在窗口中输入 immed,不带大于号 (>)。 | immed |
从“即时”窗口切换回“命令”窗口。 | 在窗口中输入 cmd。 | >cmd |
以下快捷键可以帮助您在“命令”模式中定位。
操作 | 光标位置 | 键绑定 | |||
循环通过以前输入的命令的列表。 | 输入行 | 向上键和向下键 | |||
向上滚动窗口。 | 命令窗口内容 | Ctrl+向上键 | |||
向下滚动窗口。 | 命令窗口内容 | 向下键或 Ctrl+向下键 | |||
通过滚动到前一个命令,突出显示该命令的全部或部分内容,然后按 Enter,可以将该命令的全部或部分内容复制到输入行中。 | |||||
标记模式
在“命令”窗口中单击前面的任何行时,将自动切换到“标记”模式。这允许您像在任何文本编辑器中那样选择、编辑和复制以前命令的文本,并将其粘贴到当前行中。
等号 (=)
用于输入 EvaluateStatement 命令的窗口确定是将等号 (=) 解释为比较运算符还是赋值运算符。
在“命令”窗口中,将等号 (=) 解释为比较运算符。不能在“命令”窗口中使用赋值运算符。例如,如果变量 varA 和 varB 的值不相同,则命令
>Debug.EvaluateStatement(varA=varB) |
将返回 False 值。
与此相反,在“即时”窗口中,将等号 (=) 解释为赋值运算符。例如,命令
>Debug.EvaluateStatement(varA=varB) |
将为变量 varA 赋予变量 varB 的值。
参数、开关和值
有些 Visual Studio 命令具有必选的和可选的参数、开关和值。当处理这些命令时,应用某些规则。下面是一个用来阐明此术语的复杂命令示例。
Edit.ReplaceInFiles /case /pattern:regex var[1-3]+ oldpar |
在此示例中,
- Edit.ReplaceInFiles 是命令。
- /case 和 /pattern:regex 是开关(以斜杠 [/] 字符开头)
- regex 是 /pattern 开关的值;/case 开关没有值。
- var[1-3]+ 和 oldpar 是参数。
任何包含空格的命令、参数、开关或值都必须用双引号引起来。 |
在命令行上,开关和参数的位置可以随便互换,但外壳程序命令是个例外,它要求开关和参数按特定的顺序出现。
几乎命令所支持的每个开关都有两种格式:短格式(一个字符)和长格式。多个短格式开关可组合为一组。例如,/p /g /m 也可表示为 /pgm。
如果短格式开关组合为一组,而且给定一个值,则该值应用于每个开关。例如,/pgm:123 等同于 /p:123 /g:123 /m:123。如果该组中的任何开关都不接受值,则发生错误。
转义符
命令行中的插入符号 (^) 字符表示紧随其后的字符将按原义而不作为控制字符进行解释。这可用于在参数或开关值(开关名除外)中嵌入直引号 (")、空格、正斜杠、插入符号或其他任何字符。例如,
>Edit.Find ^^t /regex |
插入符号在引号内或引号外的作用相同。如果插入符号是该行的最后一个字符,则忽略不计。