天天看点

72.windbg-命令行选项(command-line options)

  • 列表内容
WinDbg的快捷方式属性中的“目标(T)”栏里输入参数可以执行不同的命令,如前面提到的VM双机调试

特别注意

除了-j 之外所有命令行参数都是大小写敏感的
  1. -aExtension

    设置默认的扩展DLL。默认值为kdextx86.dll或kdexts.dll。在”a”之后不能加入空格,并且不能包含.dll 扩展名。

  2. -b

    (仅ring0模式) 该选项有两个作用:

    1.调试器在连接到目标机时立即中断它。

    2.重起之后,一旦内核初始化完成,调试器就中断目标机

  3. -c “command”

    指定启动时运行的初始调试器命令。该命令必须用引号括起来。多条命令可以使用分号来分隔。

    如cmdtree可以使用以下命令自动加载

    “C:\Program Files (x86)\Debugging Tools for Windows (x86)\windbg.exe” -c”.cmdtree c:\cmdtree\cmdtree.txt”
  4. -d

    (仅内核模式) 重起之后,在完成内核模块加载时调试器就中断目标机。(该断点比-b 选项的断点更早)

  5. -e Event

    通知调试器指定的事件发生。该选项仅在编程启动调试器时使用。

  6. -ee {masm|c++}

    设置默认的表达式求值器。如果指定masm,则使用MASM表达式语法。如果指定C++,则使用C++语法。如果省略-ee选项,默认使用MASM表达式语法

  7. -failinc

    指示调试器忽略任何可疑的符号。调试用户模式或内核模式minidump文件时,该选项也可以避免调试器加载任何映像不能被映射的模块的符号

  8. -g

    (仅用户模式) 忽略目标应用程序中的初始断点。该选项使得目标程序在启动后或者WinDbg附加之后继续运行,除非设置了其他断点。

  9. -G

    (仅用户模式) 忽略进程终止时的最终断点。一般情况下,在映像结束过程中调试会话会结束。该选项使得调试会话在目标终止时直接退出。

  10. -I[S]

    将WinDbg安装为即时调试器。操作完成后,会显示成功或失败的信息。如果指定了S ,成功不会有任何信息,只有失败会显示信息。

  11. -IA[S]

    在注册表中将WinDbg和.dmp、.mdmp和.wew扩展名关联起来。操作完成后,会显示成功或失败的信息。如果指定了S ,成功不会有任何信息,只有失败会显示信息。进行这种关联后,双击带有这些扩展名的文件会启动WinDbg。

  12. -i ImagePath

    指定产生错误的可执行文件的位置。如果该路径包含空格,需要用引号括起来

  13. -j

    允许日志。

  14. -log{o|a} LogFile

    将日志记录到日志文件中。如果指定文件已存在,使用-logo 时会被覆盖,使用-loga 时会将新内容添加到后面。

  15. -remote ClientTransport

    创建一个调试客户端,并连接到已经运行的调试服务器上。

  16. -lsrcpath

    为远程客户端设置本地源码路径。使用该选项时命令行中必须有-remote。

  17. -n

    详细符号加载:启用符号处理器的详细输出

  18. -noinh

    (仅用户模式) 阻止调试器创建的进程继承调试器的句柄。

  19. -noprio

    阻止任何权限的改变。该选项激活时会阻止WinDbg获得CPU时间的优先权。

  20. -noshell

    禁止任何.shell 命令。这种阻止只要调试器还在运行就会持续,即使开始了新的调试会话。

  21. -o Path

    (仅用户模式) 调试所有由目标进程创建的进程(子进程)。默认情况下,调试的目标进程创建的子进程是正常运行的。

    如调试多进程exe:

    “c:\windbg.exe” -o d:\MuiltiProcessTab.exe

    则每生成一个新的子进程,windbg会自动断下,如下图

    72.windbg-命令行选项(command-line options)
    自己通过|和~来切换进程和线程
  22. -p PID

    指定要调试进程的十进制进程ID。这用于调试已运行的进程。

  23. -pd

    (Windows XP和之后的系统,仅用户模式) 指定在结束调试会话时目标程序不会被终止。

  24. -pn Name

    指定被调试进程的名字。(该名字必须是唯一的。)这用来调试一个已经在运行的进程

  25. -pr

    (Windows XP和之后的系统,仅用户模式) 是的调试器在附加到目标进程时让它运行。这在程序已经被挂起并且想恢复它的执行时有用。

  26. -pt Seconds

    指定中断超时时间,以秒为单位。默认为30

  27. -pv

    (仅用户模式) 指定调试器应该以非侵入的方式附加到目标进程。

  28. -robp

    这使得WinDbg可以在只读的内存页面上设置断点。(默认情况下这种操作会失败。)

  29. -secure

    激活安全模式。

  30. -ses

    使得调试器对所有符号文件进行严格的匹配并忽略任何有问题的符号。

  31. -sflags 0xNumber

    一次设置所有的符号处理器。Number 应该是以0x 开头的16进制数 — 不带0x 的10进制数也可以使用,但是由于符号选项是二进制标志,所以推荐使用16进制。该选项应该小心使用,因为它会覆盖所有默认的符号处理器。

  32. -snc

    使得调试器关闭C++转换。

  33. -snul

    禁止为有问题的名字自动加载符号。

  34. -srcpath SourcePath

    指定源文件搜索路径。用分号(;)分隔多个路径。如果路径包含空格,需要用引号括起来

  35. -sup

    使得符号处理器每次搜索符号时都搜索公有符号表。

  36. -T Title

    设置WinDbg窗口标题。

  37. -v

    启用调试器的详细输出。

  38. -y SymbolPath

    指定符号搜索路径。使用分号(;)分隔多个路径。如果该路径包含空格,应该使用引号括起来

    这个也是非常有用的, 相当于使用了.sympath,注意不是使用.symfix+,后者会加入微软公用服务器
  39. -z DumpFile

    指定要调试的崩溃转储文件名。如果路径和名字包含空格,必须使用引号括起来。可以通过包含多个-z选项,每个后跟不同的DumpFile值来一次打开几个dump文件。

-y c:\mysymbol -c”.cmdtree C:\CMDTREE\cmdtree\cmdtree.txt”