WineDbg 使用说明

参考官网文档:

Wine Developer's Guide/Debugging Wine - WineHQ Wiki

一、综合

abort中止调试器
quit退出调试器
attach N附加到进程(N是其ID、数字或十六进制(0xN))。可以使用info process命令获取ID。请注意,info process命令返回十六进制值。
detach退出进程.
help显示帮助文档
help info显示帮助文档

二、流程控制

contc继续执行,直到出现下一个断点或异常。
pass将异常事件向上传递到过滤器。
steps继续执行,直到代码的下一行“C”(进入函数调用)
nextn继续执行,直到代码的下一行“C”(不进入函数调用)
stepisi执行下一个程序集指令(进入函数调用)
nextini执行下一个程序集指令(不进入函数调用)
finishf执行直到退出当前函数

         cont、step、next、stepi、nexti可以用数字(N)后缀,这意味着命令执行N次。

三、断点/观察点

enable N启用(中断|监视)点N
disable N禁用(中断|监视)点N
delete N删除(中断|监视)点N
cond N删除(中断|监视)点N的任何现有条件
cond N expr将条件expr添加到(中断|监视)点N。每次遇到断点时,都会评估expr。如果结果为零值,则不会触发断点。
break * N在地址N处添加断点
break id在符号id的地址处添加断点
break id N在符号id内的第N行添加断点
break N在当前源文件的第N行添加断点
break在当前$PC地址添加断点
watch * N在地址N(4字节)添加一个监视命令(写入时)
watch id在符号id的地址添加一个监视命令(写入时)
info break列出所有(中断|监视)点(带状态)

您可以使用符号EntryPoint来表示DLL的入口点。

当通过id设置断点/观察点时,如果找不到符号(例如,符号包含在尚未加载的模块中),winedbg将调用符号的名称,并在每次加载新模块时尝试设置断点(直到成功为止)。

四、堆栈

bt打印当前线程的调用堆栈
bt N打印ID为N的线程的调用堆栈(注意:这不会改变up和dn命令操作的当前帧的位置)
up在当前线程的堆栈中向上一帧
up N在当前线程的堆栈中向上N帧
dn在当前线程的堆栈中向下一帧
dn N在当前线程的堆栈中向下N帧
frame N将N设置为当前线程堆栈的当前帧
info local

打印当前函数框架的局部变量信息

五、目录和源文件操作

show dir打印查找源文件的目录列表
dir pathname将路径名添加到要查找源文件的目录列表中
dir删除要查找源文件的目录列表
symbolfile pathname加载外部符号定义
symbolfile pathname N加载外部符号定义(对地址应用N的偏移量)
list列出从当前位置向前的10行源代码
list -从当前位置向后列出10行源代码
list N列出当前文件中第N行开始的10行源代码
list path:N列出文件path中第N行开始的10行源代码
list id列出了函数id的10行源代码
list * N列出来自地址N的10行源代码

可以使用','指定结束目标(以更改10行的值)。例如:

list 123, 234列出当前文件中从第123行到第234行的原代码
list foo.c:1, 56列出文件foo.c中从第1行到第56行的源代码

六、显示表达式

是在执行任何winedbg命令后计算并打印的表达式

winedbg将自动检测输入的表达式是否包含局部变量。如果包含,则只有当上下文与输入显示表达式时调试器所在的函数仍在同一函数中时,才会显示。

info display列出活动的显示表达式
display打印活动显示表达式的值(每次调试器停止时都会打印)
display expr添加显示表达式expr
display /fmt expr添加表达式expr的显示。按照指定格式打印expr 结果(有关格式的更多信息,请参阅打印命令)
del display Nundisplay N删除显示表达式N

七、反汇编

disas从当前位置反汇编
disas expr从地址表达式反汇编
disas exprexpr在两个表达式指定的地址之间反汇编代码

八、内存值

x expr检查expr地址的内存
x /fmt expr使用fmt格式检查expr地址处的内存
print expr打印expr的值(使用其类型格式)
print /fmt expr使用fmt格式打印expr的值
set lval=expr

设置 lval=expr

whatis expr打印表达式expr的C类型
set ! symbol_picker interactive打印值时,如果找到几个符号,请询问用户要选择哪一个(默认值)
set ! symbol_picker scopedb打印值时,将局部符号优先于全局符号

fmt是字母或多个字母(数字和字母之间没有空格),其中字母可以是

s    ASCII 字符串

u   Unicode UTF16 字符串

i     指令(反汇编)

x    32位无符号十六进制整数

d    32位有符号十进制整数

w    16位无符号十六进制整数

c    字符(实际只打印可打印的0x20-0x7f)

b    8位无符号十六进制整数

g    GUID

九、Wine 内部信息

info class列出在Wine中注册的所有Windows类
info class id打印有关Windows类id的信息
info share列出调试程序中加载的所有动态库(包括.so文件、NE和PE DLL)
info share N在地址N打印模块信息
info regs打印CPU寄存器的值
info all-regs打印CPU和浮点寄存器的值
info segment N打印段N上的信息(仅限i386)
info segment列出所有已分配的段(仅限i386)
info stack打印堆栈顶部的值
info map列出已调试程序使用的所有虚拟映射
info map N列出wpid N的程序使用的所有虚拟映射
info wnd N打印句柄N的窗口信息
info wnd列出从桌面窗口开始的所有窗口层次结构
info process列出Wine会话中的所有进程
info thread列出Wine会话中的所有线程
info exception列出异常帧(从当前堆栈帧开始)

十、调试频道

在使用set命令进行调试时,可以打开和关闭调试消息。

set + warn channel打开warn频道
set + channel在频道上打开warn/fixme/err/trace
set - channel在频道上关闭warn/fixme/err/trace
set - fixme在频道上关闭fixme
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值