通过telnet查看程序中的变量及执行调试函数

如题,某些应用就支持这种功能。如何实现的呢?

linux_dev_framework软件包中的telnetd4dbg_test.c就是一个实现示例。

该程序运行后,用户通过telnet  127.1 10000即可登陆到此程序的调试shell环境中

然后即可输入变量名查看变量值,或者输入 变量名=值 以修改变量的值,或者执行调试函数。

例如,

输入 my_var,即可查看变量my_var的信息。

输入 my_var=5,即可将变量my_var的值修改为5。

输入 my_func(1, "good", 0x123) 即可使用输入的参数执行函数my_func
目前最大支持8个参数,且每个参数size必须等于sizeof(long)
my_func函数的各个入参就是一个符合要求的例子。


输入d(mem_addr, len)可以查看内存的内容
例如,

输入d(0x12345678, 32)即可查看内存地址0x12345678处的32个字节的内容。


运行效果:

[root@localhost ~]# cd linux-dev-framework

[root@localhost ~]# make

...

[root@localhost linux-dev-framework]# ./target/telnetd4dbg_test.exe 

然后,用户通过telnet命令登陆到此程序的调试shell环境,就能感受到类似如下的调试体验了。

[root@localhost ~]#telnet 127.1 10000


 ****debug_shell started****
you can input var names to see var info
you can input d(addrress, len) to see memory contents
you can input xxx(1, 0x2, "abc") to execute function xxx
caution: every args's size of function xxx must == sizeof(long)


[debug_shell]#my_var
[var address] : 0x6030cc


[values] :
1 byte :0xd2               (-46)
2 bytes:0x4d2              (1234)
4 bytes:0x4d2              (1234)
8 bytes:0x63d87640000004d2 (7194630421974353106)


[debug_shell]#my_func(1, "hello", 0x64)
para1=1 para2=0x7fe8639cae1b para3=100
para2 contents = hello
[debug_shell]#


本程序源码在linux-dev-framework源码包中。

linux-dev-framework源码包的介绍:http://blog.csdn.net/crazycoder8848/article/details/22491525

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值