Openwrt之gdb调试
1. 第一种情况:应用层API(用户态)【coredump方法】
路由器: 在路由器/tmp运行命令,使其段错误的时候生成core文件;ulimit -c unlimited;
pc: 把 路由器的/tmp/core文件复制到 电脑的openwrt源码编译目录[/home/luo/op](虚拟机/远程服务器)
开始gdb调试:
cd /home/luo/op;
./staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-1.0.x/bin/mipsel-openwrt-linux-uclibc-gdb build_dir/target-mipsel_24kec+dsp_uClibc-1.0.x/xxx/可执行文件 /home/luo/op/core
set sysroot /home/luo/op/staging_dir/target-mipsel_24kec+dsp_uClibc-1.0.x/root-ralink/
bt
list
frame 1
2. 第二种情况:编译进内核,内核奔溃调试(内核态) [看符号表]
1.看路由器串口信息,在哪里奔溃
[ 1.452000] Call Trace:
[ 1.452000] [<802735e8>] flash_otp_init+0x8c/0x1e8
[ 1.452000] [<802735e8>] xxxx
[ 1.452000] [<802735e8>] xxxx
2.进入openwrt编译目录调试
cd build_dir/target-mipsel_24kec+dsp_uClibc-1.0.x/linux-ralink_mt7620/linux-3.14.79;
gdb vmlinux; 使用X86/64的gdb,而不是mipsel的
list *(flash_otp_init+0x8c); 这个可以定位到哪一个.c文件的哪一行;
3. 第三种情况:编译为模块,内核奔溃调试(内核态) [看符号表]
.ko模块调试;需要做一个准备动作;
make menuconfig
Global build settings --->
Compile the kernel with profiling enabled; [CONFIG_KERNEL_PROFILING]
make V=s -j8要重新编译内核,烧写固件;
1.看路由器串口信息,在哪里奔溃
[ 1.452000] Call Trace:
[ 1.452000] [<802735e8>] xxx_trig_activate+0x2c/0x1e8
[ 1.452000] [<802735e8>] xxxx
[ 1.452000] [<802735e8>] xxxx
2.进入openwrt编译目录调试
cd build_dir/target-mipsel_24kec+dsp_uClibc-1.0.x/linux-ralink_mt7620/
gdb ledtrig-xxx/ledtrig-xxx.ko; 使用X86/64的gdb,而不是mipsel的
list *(xxx_trig_activate+0x2c); 这个可以定位到哪一个.c文件的哪一行;
gdb build_dir/target-mipsel_24kec+dsp_uClibc-1.0.x/linux-ralink_mt7620/linux-3.14.79/vmlinux
list *(flash_otp_init+0x8c)
Openwrt之gdb调试相关推荐
- vs linux 交叉编译,VS结合VisualGDB搭建OpenWrt交叉编译远程调试开发环境
由于此开发环境涉及3设备协同工作,因此先说明一下整体开发环境的配置以及每部分所负责的功能: 1.Windows PC 这里我用的是64位Win7,作为VS的安装环境Windows自然是必不可少的,本机 ...
- 使用 GDB 调试多进程程序
使用 GDB 调试多进程程序 来源 https://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html GDB 是 linux 系统上常 ...
- GDB调试--以汇编语言为例
#rpm -qa |grep gdb 下载: 安装 #tar -zxvf #./configure #make 使用GDB 以汇编语言调试为例 汇编语言实现CPUID指令 CPUID cpuid是I ...
- GDB 调试 Mysql 实战(二)GDB 调试打印
背景 在 https://mengkang.net/1328.html 实验中,我们通过optimizer_trace发现group by会使用intermediate_tmp_table,而且里面的 ...
- 用gdb调试mpi程序的一些心得
Linux下MPI (Message Passage Interface) 的程序不太好调试,在windows下vs2005以上的IDE有集成的简便MPI调试工具,没有用过,有兴趣的可以试验一下.下面 ...
- gdb php-fpm,使用 gdb 调试 php-fpm 异常错误
相关资源下载GDB简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能. 问题 ...
- Linux基础 30分钟GDB调试快速突破
引言 Linus心灵鸡汤 在*nix开发中有道卡叫gdb调试,不管你怎么搞. 它依然在那丝毫不会松动.今天致敬一个 活着的传奇 Linus Torvalds Unix 始于上个世纪60年代,在70年代 ...
- SLAM工具|GDB调试从入门到精通
前言 对于windows平台下,VS下调试简单又方便,那么在linux系统下,该如何进行代码的调试呢? gdb是linux下非常好用的一个调试工具,虽然它是命令行模式的调试工具,但是它的功能非常强大, ...
- gdb调试 print打印不出变量值或者不准确
编译选项加了 -O,即便是-O0,也不能正常显示,需要加上-gstabs+这个编译选项, -gdwarf-2这个编译选项会与-gstabs+冲突,去掉-gstabs+,只保留-gdwarf-2选项可以 ...
最新文章
- MFC获取文字高宽设置字符间隔
- pyecharts应用2 柱状图
- Kafka2.5->Flink1.12->Mysql8(Jark实验改为DDL形式)
- 【Python-随机旋转】图像随机旋转及坐标进行旋转原理
- Vagrant搭建可移动的PHP开发环境
- AUTOSAR从入门到精通100讲(十五)-AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解
- 李廷伟:可穿戴技术引领物联网创新新浪潮
- 不是每个人的一生都会有贵人相助
- 手机游戏再造创业神话 80后月入过百万
- matlab画圆的命令_matlab画圆
- 无线通信行业常用名词
- python怎样计算增长率_增长率如何计算
- 微信开发者工具调试H5项目报错:XXXXfail, the permission value is offline verifying解决方案
- 旗下企业永远不会超过七家 马云
- js alert弹窗函数
- MicroCity的一点介绍-标号法、最小费用流
- Power BI与Tableau的对比与选择
- 直接调节风扇转速的Windows开源工具--Open Hardware Monitor
- 3.Hadoop3.x 项目测试
- Linux·centos 钉钉下载安装
热门文章
- Revit 2014 SDK中例子整理 (一)
- android textview 字体阴影,TextView加文字阴影
- 校园二手市场交易平台(JAVA,SSM,BOOTSTRAP,JSP,AJAX,MYSQL)
- 给开发人员的时间管理建议
- 腾讯视频QLV格式转换成mp4格式,只需这样做!
- 软考考试可以弃考吗?有什么影响?
- 几年级学生时候用计算机,小学要求一年级学生带电脑上课 称教学需要
- 2020年全球农药行业发展现状及竞争格局分析,受环保政策影响,全球农药市场规模增速趋缓「图」
- YOLOV1详解——Pytorch版
- 感应电动机和异步电动机的区别