WinDbg常用命令系列---源代码操作相关命令
lsf, lsf- (Load or Unload Source File)
lsf和lsf-命令加载或卸载源文件。
lsf Filename lsf- Filename
参数:
- Filename
指定要加载或卸载的文件。如果此文件不在从中打开调试器的目录中,则必须包含绝对路径或相对路径。文件名必须遵循Microsoft Windows文件名惯例。
lsf命令加载源文件。lsf-命令卸载源文件。可以使用此命令卸载以前使用lsf加载的文件或自动加载的源文件。不能使用lsf-卸载通过windbg的file|open source file命令加载的文件或windbg工作区加载的文件。在cdb或kd中,可以在调试器命令窗口中查看源文件。在windbg中,源文件作为新的源窗口加载。
lsc (List Current Source)
lsc命令显示当前源文件名和行号。
lsc
lse (Launch Source Editor)
该命令打开当前源文件的编辑器。
lse
lse命令打开当前源文件的编辑器。此命令相当于在windbg的源窗口的快捷菜单中单击“编辑此文件”。发布服务器在运行目标的计算机上打开,因此您不能从远程客户端使用lse命令。windiff编辑器注册表信息或WINDBG_INVOKE_EDITOR环境变量的值决定打开哪个编辑器。例如,考虑WINDBG_INVOKE_EDITOR的以下值。
c:\my\path\myeditor.exe -file %f -line %l
此值表示myeditor.exe打开到当前源文件的基于一个行号的行。%l选项表示行号应以一个为基础读取,而%f表示应使用当前源文件。您还可以包括%l以指示行号是基于零的,或者包括%p以指示应使用当前源文件。
ls, lsa (List Source Lines)
ls和lsa命令显示来自当前源文件的一系列行,并前进当前源行号。
ls [.] [first] [, count] lsa [.] address [, first [, count]]
参数:
- .
使命令查找调试器引擎或.srcpath(设置源路径)命令正在使用的源文件。如果不包括句点(.),ls将使用lsf(加载源文件)命令最近加载的文件。 - address
指定源显示开始的地址。 - first
指定要显示的第一行。默认值是当前行。 - count
指定要显示的行数。默认值是20(0x14),除非使用lsp-a命令更改了默认值。
运行ls或lsa命令后,当前行被重新定义为显示的最后一行加上一行。当前行用于将来的ls、lsa和lsc命令。
lsp (Set Number of Source Lines)
lsp命令控制单步执行或执行代码或使用ls和lsa命令时显示的源代码行数。
lsp [-a] LeadingLines TrailingLines lsp [-a] TotalLines lsp [-a]
参数:
- -a
lsp命令控制单步执行或执行代码或使用ls和lsa命令时显示的源代码行数。 - LeadingLines
指定要在当前行之前显示的行数。 - TrailingLines
指定要在当前行之后显示的行数。 - TotalLines
指定要显示的行总数。这个数字在前导行和尾随行之间平均分配。(如果此数字为奇数,则显示更多的尾随行。)
当您在没有参数的情况下使用lsp命令时,lsp将显示您在单步执行时使用的当前前导行和尾行值。当您仅将此命令与-a参数一起使用时,lsp将显示您在单步执行以及ls和lsa命令时使用的值。 当您单步执行程序或在程序执行后插入时,上一个lsp命令将确定显示的前导和尾随行数。使用lsa时,前一个lsp-a命令确定显示的前导和尾随行数。使用ls时,所有行都显示为一个块,因此前一个lsp-a命令确定显示的行总数。
.open (Open Source File)
.open命令搜索源文件的源路径并打开此文件。
.open [-m Address] FileName .open -a Address
参数:
- FileName
指定源文件名。此名称可以包含绝对路径或相对路径。除非指定绝对路径,否则该路径将被解释为相对于源路径中的目录。
- -m Address
指定源文件中的地址。此地址必须包含在已知模块中。如果filename指定的文件不唯一,则应使用-m address参数。 如果使用源服务器检索源文件,则需要-m参数。
- -a Address
指定源文件中的地址。此地址必须包含在已知模块中。如果调试器可以找到源文件,则调试器将加载并打开该文件,并突出显示与指定地址对应的行。如果调试器找不到源文件,则地址将显示在“反汇编”窗口中。
.srcpath, .lsrcpath (Set Source Path)
.srcpath和.lsrcpath命令设置或显示源文件搜索路径。
.srcpath[+] [Directory [; ...]] .lsrcpath[+] [Directory [; ...]]
参数:
- +
指定新目录将附加到(而不是替换)上一个源文件搜索路径。 - Directory
指定要放入搜索路径中的一个或多个目录。如果未指定目录,则显示当前路径。用分号分隔多个目录。
.srcpath命令在所有调试器上都可用。.lsrcpath命令仅在windbg中可用,不能在脚本文件中使用。如果源路径中包含srv*,调试器将使用srcsrv从目标模块符号文件中指定的位置检索源文件。从调试客户端发出此命令时,.srcpath设置调试服务器上的源路径,.lsrcpath设置本地计算机上的源路径。
.srcfix, .lsrcfix (Use Source Server)
.srcfix和.lsrcfix命令自动设置源路径,以指示将使用源服务器。
.srcfix[+] [Paths] .lsrcfix[+] [Paths]
参数:
- +
使现有源路径保持不变,并将srv*追加到末尾。如果未使用+号,则替换现有源路径。 - Paths
指定要附加到新源路径末尾的一个或多个附加路径。
.srcfix命令在所有调试器上都可用。.lsrcfix命令仅在windbg中可用,不能在脚本文件中使用。将srv*添加到源路径时,调试器使用srcsrv从目标模块符号文件中指定的位置检索源文件。在源路径中使用srv*与在符号路径中使用srv*有本质的不同。在符号路径中,可以指定符号服务器位置以及srv*(例如,.sympath srv*http://msdl.microsoft.com/download/symbols)。在源路径中,srv*是独立的,用分号与所有其他元素分隔开。从调试客户端发出此命令时,.srcfix将源路径设置为使用调试服务器上的源服务器,而.lsrcfix在本地计算机上执行相同的操作。这些命令与.srcpath(set source path)和.lsrcpath(set local source path)命令相同,后面跟着srv*source path元素。因此,以下两个命令是等效的:
.srcfix[+] [Paths] .srcpath[+] srv*[;Paths]
类似地,以下两个命令是等效的: