调试相关(gdb kgdb kdb等)
文章平均质量分 65
调试相关(gdb kgdb kdb等)
hjjdebug
西方用26个字母表示世界,计算机用0,1两个数字表示世界,大道至简!
人类用6号元素碳来思考, 计算机用14号元素硅来演算,精妙绝伦!
展开
-
gdb 重定向标准输入输出
gdb 重定向标准输入输出/*author:hjjdebugdate: 2022年 06月 17日 星期五 14:38:28 CST*/假如gdb 的shell 是 /dev/pts/2另开一个窗口其 shell 是 /dev/pts/1现在想把gdb 的输入输出重定向到 /dev/pts/1步骤1: 在/dev/pts/1窗口输入$ sleep 10000让 /dev/pts/1 睡眠10000秒, 让这个shell 在这段时间是不活动的。这样保证这个窗口接受我们程序的输出,在这个窗口下原创 2022-06-17 15:27:37 · 1587 阅读 · 0 评论 -
gdb break if命令,condition 命令,ignore命令
break if--------------------------------------------------------用法: 支持简单变量的判断, 字符串变量可以化为字符来比较.--------------------------------------------------------break [break-args] if (condition)举例:break main if argc > 1break myfunc if i % (j + 3) != 0break原创 2022-05-02 20:14:32 · 6985 阅读 · 0 评论 -
gdb hook-next 监视结构变量
演示一个gdb 跟踪结构变量变化的例子, 每次单步运行之后,即检查变量有没有发生变化的自动化脚本.(目前成功的是单步执行前执行)先上简单测试代码:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct _Test{ int a; int b;}Test;int main(){ Test test; test.a=10; test.b=20; pr原创 2022-01-16 15:28:19 · 437 阅读 · 0 评论 -
Vim+Ctags+Taglist应用中添加自定义语言gdb
Vim+Ctags+Taglist应用中添加自定义语言gdb拿到了gdbinit 文件, 挺大,3998行, 不易阅读, 能否用ctags 处理加入函数定义呢?研究了一下,参考网络, 记录于此:----------------------------------------Ctags 中添加新的语言----------------------------------------ctags 的配置文件其实在 ~/.ctags 中,打开该文件,添加如下代码这个代码来源于网上,看懂了可以自己写原创 2022-01-16 12:00:08 · 361 阅读 · 0 评论 -
交叉编译gdbserver
从官网下载最新的gdb代码http://ftp.gnu.org/gnu/gdb/这才是正宗的, 那些git, googlesource, 镜像,甚至什么补丁,脚本等全见鬼去吧。这么简单的事为什么搞那么复杂呢?装xx? 历史?tar -xzvf gdb-7.11.tar.gz , 这才是正宗代码,包含gdb和gdbserver1. 编译gdbcd gdb-7.11原创 2016-10-09 15:09:07 · 3563 阅读 · 2 评论 -
用gdb 查看,执行汇编代码
用gdb 查看汇编代码, 采用disassemble 和 x 命令。 nexti, stepi 可以单步指令执行如下例:------------------------------------------------------------源代码:------------------------------------------------------------[root@hjj...原创 2014-05-23 14:45:27 · 76738 阅读 · 1 评论 -
gdb 自定义脚本命令语法简单介绍
1. # 为脚本注释命令2. 赋值语句:set,set 命令很强大,a.它可以是设置gdb 的选项, 例如:set confirm offset verbose offset history filename ~/.gdb_historyset history saveset output-radix 0x10set input-radix 0x10set 选项可以用s...原创 2015-12-18 12:02:28 · 10685 阅读 · 0 评论 -
gdb 杂项
#set detach-on-fork off //多进程处理#set follow-fork-mode child //多进程 跟踪哪个#set scheduler-locking on //多线程其它线程的处理#set break pending on //未来断点原创 2015-01-07 13:01:27 · 5175 阅读 · 1 评论 -
使用gdb+gdbserver调试嵌入式程序
gdb+gdbserver 调试嵌入式程序的例子如果环境没有提供交叉编译程序gdbserver , 可以参考交叉编译步骤1.arm 上的一个程序monitorAll是我调试的例子, 它在客户端的执行命令如下. ./monitorAll -qws -font wenquanyi2.用gdbserver 调试的步骤:1.target 端: gdbserv原创 2017-05-10 12:06:55 · 1553 阅读 · 0 评论 -
gdb: Don‘t know how to run. Try “help target“.
gdb 远程调试的一个问题:Don't know how to run. Try "help target".它在抱怨不知道怎么跑,目标是什么. 你需要为它指定target remote 或target extended-remote例如:target extended-remote 192.168.1.136:1234指明target 是某IP的某端口完整示例如下:targ...原创 2019-03-27 11:30:07 · 5124 阅读 · 0 评论 -
ollydbg 调试
当我再一次拿起ollydbg时,竟觉得如此陌生,这里以一个老手从新手的角度来记录一下需要快速掌握的东西。版本已经递长到1.10(help 菜单),功能肯定更强,使用更方便了1.首先是常用的快捷键.快捷键特性:时间久了,快捷键会忘记. 用一用,又能很快熟悉起来。翻一翻菜单上关联的快捷健,能很快熟悉和使用起来。它们是:a. 调试类型F9: runctrl-F9: 执行到返回原创 2016-08-03 22:35:56 · 1312 阅读 · 0 评论 -
gdb 内存断点watch 的使用
1. watch 变量的类型 a. 整形变量: int i; watch i; b. 指针类型: char *p; watch p, watch *p; 它们是有区别的. watch p 是查看 *(&p), 是p 变量本身。 watch (*p) 是 p 所指的内存的内容 c. watch 一个数组或内存区间 ch原创 2016-01-23 17:02:46 · 68691 阅读 · 0 评论 -
用kgdb 调试模块-第二部分,串行口准备
你的target 机上要有真实的串口, 不能是usb转串口的那种。 我试了, target 机不承认。实在没有串口,用vmware 虚拟机可以虚拟一个,实验了一下可以使用。-------------------------------------------------在vmware 上clone虚拟机,并配置虚拟出串口-------------------------------原创 2013-08-12 17:57:38 · 1550 阅读 · 0 评论 -
用kgdb 调试模块-第一部分,内核准备
----------------------------------------kgdb 调试第一部分: 内核的准备说实话,这些都是很基本的东西, 你基本上也不用刻意去修改什么, 但却往往浪费了大量时间。这就是熟练和不熟练的差别,关于编译内核,请参考其它文档。----------------------------------------kgdb 调试:关于内核配置的一些选项。原创 2013-08-12 17:48:53 · 1435 阅读 · 0 评论 -
用kgdb 调试模块-第三部分:动态启动kgdb
-------------------------------------------------动态启动kgdb:-------------------------------------------------echo ttyS1 > /sys/module/kgdboc/parameters/kgdboc 如果成功, 可以在/var/log/message里看到 kernel原创 2013-08-12 18:11:01 · 2561 阅读 · 0 评论 -
description: kgdb 远程调试实例
/********************************************************************************* * author: hjjdebug * date: 2013 * description: kgdb 远程调试实例/**************************************************原创 2013-09-05 19:55:16 · 1608 阅读 · 0 评论 -
gdb 调试高级命令
1. gdb 运行初始化命令 -x usercmd 在.gdbinit 初始化命令中, 可以用#(同bash 注释符合)来注释 可以用source <cmd file> 在启动gdb 后运行gdb 命令文件 可以用file <loading file> 在启动gdb 后再加载文件2. gdb 传递命令行 参数a. run <args...原创 2019-11-26 10:36:36 · 29718 阅读 · 1 评论 -
用valgrind 检测内存错误
用valgrind 检测内存错误 ---------------------------------------- 前言: ---------------------------------------- 介绍了valgrind 是什么,工作原理。 内存错误是什么, 给出了一个综合内存错误实例。看一看valgrind 如何汇报错误. ---------------原创 2014-08-01 11:41:32 · 8885 阅读 · 0 评论 -
用gdb 调试,跟踪glibc库文件
---------------------------------------- 用gdb 调试,跟踪glibc库文件 ---------------------------------------- 这里以调试跟踪glibc 文件为例, 跟踪printf, 没有想象的那么激动。 1. 下载连接库分离的debug 信息 a. vim /etc/yum.repo.d/原创 2014-09-09 13:49:04 · 9429 阅读 · 0 评论 -
vimgdb 环境建立和使用。
----------------------------------------a. vimgdb 环境的建立。----------------------------------------这篇文档不是为初学者看的,只是用过的人的一个提示。1. vimgdb 需要下载vim 源码, 并打vimgdb 补丁. 编译(--enable-gdb),安装完成后。 再把vimgdb 运行库放到v...原创 2013-09-30 11:17:32 · 5285 阅读 · 1 评论 -
串行口工具
------------------------------------------------------------author: hjjdebugdate: 2016年 02月 25日 星期四 21:09:10 CST------------------------------------------------------------因工作需要,需要俘获串行口上的数原创 2016-08-03 22:24:45 · 525 阅读 · 0 评论 -
ubuntu kdb 使用
ubuntu kdb 使用在vmware7 虚拟机上通过一. 下载源码包,注意与内核对应:网址:http://oss.sgi.com/projects/kdb/*.bz2 用 bzip2 -d或者用bunzip2 解压二. 为内核打补丁patch -p1 patch -p1 三. 配置内核Kernel hacking中select Built-in Ke原创 2013-08-09 17:14:20 · 2867 阅读 · 0 评论