WinDbg常用命令系列---源代码操作相关命令

匿名 (未验证) 提交于 2019-12-02 23:59:01

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]  

类似地,以下两个命令是等效的:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!