lnxdbg - LENIX的调试器

0. 简介

开发程序自然少不了调试器,所以,具备条件后,开发一个LENIX下的调试器就很重要了。也因为自己需要用调试器,好吧,那就开发一个调试器,自己就是第一个用户。

但是,这是一个很初级的系统,还没办法开发出和windows那样功能强大的调试器,只能弄一个简单的凑合着用,然后慢慢升级。

1. 功能

功能比较简单,参考了DOS的debug程序,以及CPU的调试功能,现在完成了设置断点、运行到指定位置、单步执行、显示寄存器内容、显示内存内容,有这几个功能,应该能满足基本的需求了。

lnxdbg采用命令行的方式进行调试,在CUI的条件下,貌似也只能用命令行的方式了。
运行调试器
在命令提示符处输入lnxdbg,意思是lenix debugger,运行后,是这个样子的。
在这里插入图片描述

1.1 退出调试器 quit

执行结果是
在这里插入图片描述

1.2 装载文件 debug

用法是: debug filename

装载成功后,会显示执行入口的地址,算是给出一个提示
在这里插入图片描述

1.3 停止调试 stop

在调试命令提示符输入stop,就会停止当前调试,关闭被调试文件,reg、trace、go这些命令都会失效。
在这里插入图片描述

1.4 显示寄存器内容 reg

在命令提示符下输入reg,如果装载了调试文件,就会显示寄存器内容,比如,这里装载了hello.exe,但是并没有开始调试,显示出的寄存器内容程序运行前的初始状态
在这里插入图片描述

1.5 显示内存 mem

mem命令用来显示内存数据,这个不用装载被调试程序也能用,

命令格式: mem 内存地址

注意一点,地址需要用16进制的格式。对于不能显示的字符,lnxdbg都用‘.'来代替了
在这里插入图片描述

1.6 单步执行 trace

单步执行命令

命令格式 trace 或者 t

这个命令可以让程序一条指令一条的执行,没执行一条指令就显示寄存器内容,用来跟踪程序执行情况。
在这里插入图片描述

1.7 运行 go

go用于连续执行,

命令格式是 go 或者 go 暂停地址
也可以是 g 或者 g 暂停地址

如果没有提供暂停地址,程序就会运行到结束,然后返回到调试程序。
在这里插入图片描述

1.8 设置断点 sbp

sbp 是set break-point的缩写

具体用法是 sbp 断点地址 【断点类型】【断点长度】

如果只用 sbp 断点地址,就默认是执行断点
在这里插入图片描述

1.9 帮助 help

主要用于显示可以使用的调试命令,毕竟有时候自己都会发忽然短路,不记得自己设计的命令了在这里插入图片描述

2. 需要增加的功能

需要增加的功能很多,我当然想把lnxdbg做成和VS的调试器那样了,有没有这个技术能力先不说,就是时间这条就没办法了。所以就只能一点一点升级了。

2.1 反汇编

其实这个功能很重要,毕竟要看程序执行到什么位置以及是什么指令,如果不能直接反汇编看指令,就要看编译器生成的汇编文件,那就飞虫啰嗦了。

2.2 直接编辑汇编代码

在调试的时候,特别是在做测试的时候,有时候仅仅需要临时看几条指令的执行情况,犯不着单独写个程序,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值