debug
李子
天若有情天亦老
月若无恨月长圆
展开
-
kgdb调试注意事项
0 首先提下注意事项的背景: kgdb和printk共用一个串口1 设置波特率: //最高支持460800波特率 arm-eabi-gdb ./vmlinux (gdb) set remotebaud 460800 //设置使用哪个端口,作为通讯端口 (gdb) target remote /dev/ttyUSB02原创 2013-09-08 09:51:39 · 1188 阅读 · 0 评论 -
perror实现分析(2.0: 具体实现)
需要用到的结构(错误号,及对应的详细信息)struct Pair { int code; const char* msg;};生成错误信息数组:struct Pair _sys_error_strings[] = {#define __BIONIC_ERRDEF(x,y,z) { x, z },#include "./_errdefs.h" { 0,原创 2013-11-07 21:43:34 · 1796 阅读 · 0 评论 -
perror实现分析(1.0: 使用实例)
首先看下 perror 的栗子,好有个感官上的认识:#include #include #include #include #include #include #include int main(){ int fd; fd = open("/dev/really_no_exists", O_RDWR); if(fd<0) {原创 2013-11-07 21:33:04 · 1156 阅读 · 0 评论 -
minicom 轻松使用
由于preloader / uboot / kernel 调试都会用到串口输出调试信息, 这里简单介绍下minicom的使用 ./minicom -s 之后选择 serial port setup (设置波特率,停止位等基本信息) 配置正确的设备文件 dmesg : 当时kernel log 太多的话可以先: sudo dmesg –c原创 2013-11-20 23:10:20 · 1578 阅读 · 0 评论 -
KGTP, Linux内核中的GDB快刀
在中国Linux内核开发者大会网站上知道了KGTP这个工具。http://www.ckernel.org/ 2013大会资料下载简单看了下架构介绍,有时间看看代码研究下,先留个纪念:原创 2013-11-01 20:19:07 · 1575 阅读 · 1 评论 -
dynamic debug动态打印
之前介绍过了 printk_once , 只打印一次。 有些情况下,需要kernel运行时动态打印与否,dynamic debug就派上用场了。 具体用法可以参考: kernel/Documentationdynamic-debug-howto.txt 使用步骤: // 打印 echo 'file nand.c line 42原创 2013-10-15 23:04:52 · 6996 阅读 · 1 评论 -
KDB支持单步调试功能(ARM架构)
0 实践发现KDB不支持step调试功能 (本文针对的是arm CotexA9架构,各种架构的实现方式不一样, X86的好像已经支持,不过本人没有验证过)1 首先看下要调试的代码段 1.1 C语言 int testPara_7(int a, int b,int c,int d, int e,int f,int g) { p原创 2013-09-09 22:18:41 · 1964 阅读 · 0 评论 -
kgdb调试注意事项
0 首先提下注意事项的背景: kgdb和printk共用一个串口1 设置波特率: //最高支持460800波特率 arm-eabi-gdb ./vmlinux (gdb) set remotebaud 460800 //设置使用哪个端口,作为通讯端口 (gdb) target remote /dev/ttyUSB02原创 2013-09-09 22:12:01 · 1630 阅读 · 0 评论 -
System Request 进入KDB模式过程详解
0 echo g > /proc/sysrq-trigger 怎么让系统停下来,进入进入KDB循环?1 需要简单了解下:Linux Magic System Request2 在sysrq数组中我并没有发现注册”g”对应调用的函数,可是调试的时候确实生效了 static struct sysrq_key_op *sysrq_key_table[36] = {原创 2013-09-09 22:10:25 · 1922 阅读 · 0 评论 -
kgdb接收一个数据包详解
0 kdb>kgdb // 可进入kgdb 模式 if (dbg_kdb_mode) { error = kdb_stub(ks); } else { error = gdb_serial_stub(ks); }1 gdbstub.c —> while (1原创 2013-09-09 22:06:54 · 1061 阅读 · 0 评论 -
perror实现分析(3.0: Linux支持的系统错误)
参考: bionic/libc/include/sys/_errdefs.h__BIONIC_ERRDEF( 0 , 0, "Success" )__BIONIC_ERRDEF( EPERM , 1, "Operation not permitted" )__BIONIC_ERRDEF( ENOENT , 2, "原创 2013-11-07 21:47:02 · 1616 阅读 · 0 评论