zoukankan      html  css  js  c++  java
  • 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:mypathmyeditor.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] 
    

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

    .lsrcfix[+] [Paths] 
    .lsrcpath[+] srv*[;Paths]
    

    .srcnoisy (Noisy Source Loading)

    .srcnoisy命令控制源文件加载的详细级别。

    .srcnoisy [Options]
    

    参数:

    • Options
      可以是以下任一选项:
      0
      禁止显示多出的信息。

      1
      显示源文件加载和卸载的进度有关的信息。

      2
      显示的符号文件加载和卸载进度有关的信息。

      3
      显示通过选项 1 和 2 显示的所有信息。

    如果没有参数,.srcnoisy将显示噪声源加载的当前状态。噪声源加载不应与噪声符号加载混淆--噪声符号加载由控制!sym noise扩展和通过其他方式控制symopt_调试设置。

  • 相关阅读:
    剑指offer-翻转单词序列
    剑指offer-丑数
    剑指offer-把数组排成最小的数
    mysql笔记(13)-视图的概念和使用
    mysql笔记(12)-外键约束的添加和删除
    mysql笔记(11)-约束的添加、修改和删除
    mysql笔记(10)-数据的插入和更新(insert/update/case)
    mysql笔记(9)-表的创建和删除(drop/truncate/delete)
    mysql笔记(8)-嵌套查询之in、exists
    mysql笔记(7)-多表查询之自然连接、外连接
  • 原文地址:https://www.cnblogs.com/yilang/p/11490657.html
Copyright © 2011-2022 走看看