linux系统调试
文章平均质量分 68
芒果520
每天进步一点点
展开
-
在驱动中创建sysfs接口、procfs接口、debugfs接口
/灯灭//灯亮这是怎么做到呢?实际上,这是因为在驱动中提供了sysfs接口给用户使用,使得用户可以通过cat或者echo命令来查看和修改驱动中某些变量的值。下面介绍驱动中创建sysfs接口的方法。原创 2023-08-26 17:47:39 · 741 阅读 · 0 评论 -
Linux系统调试之gdbserver远程调试程序
本篇讲解如何使用gdbserver对目标开发板上的程序进行远程调试。原创 2023-08-23 19:16:24 · 1853 阅读 · 0 评论 -
Linux系统调试之stty修改串口波特率
Linux内核启动后,串口的波特率通常是115200或者9600,此时shellsttysttyset tty。即改变并打印终端行设置,用于检查和修改当前注册的终端的通信参数。原创 2023-08-23 14:15:45 · 1994 阅读 · 0 评论 -
Linux系统调试——核心转储(core dump)
本篇讲解Linux应用程序发生段错误时,如何利用core dump文件定位错误。原创 2023-08-19 17:45:57 · 353 阅读 · 0 评论 -
Linux内核之神奇的系统请求键SysRq
Linux内核提供了一些与用户空间的通信机制,例如procfs接口和sysfs接口,大部分的这些接口都可以作为获取内核信息的手段。但除了这些接口,内核也提供了专门的调试机制——系统请求键SysRq。SysRq被内核称为“”,即“神奇的系统请求键简单来说,就是可以通过键盘的按键获取内核的信息,用于调试。相当于是一个快捷键。原创 2023-08-19 16:32:52 · 267 阅读 · 0 评论 -
Linux内核常用调试技巧汇总
通过调用关系看出,驱动入口函数hello_init,是由do_init_module调用do_one_initcall,然后再调用到了hello_init。WARN_ON()宏相对会好一些,不会触发panic()函数,使系统主动宕机,但会输出函数调用栈信息,提示开发者可能发生了一些不好的事情。printk打印是全局的,使用动态输出则可以有选择地输出某个模块或某个子系统的打印,pr_debug()就是使用了动态输出。在内核中经常看到BUG()和BUG_ON()宏,这也是内核调试常用的技巧之一。原创 2023-08-18 17:45:45 · 258 阅读 · 0 评论 -
内核调试之devmem直接读写寄存器
在Linux系统,如果我们想要访问某个寄存器,就需要写一个驱动程序,在驱动中映射寄存器地址,转为虚拟地址后就可以访问。但有时候,我们只是单纯想知道某个寄存器的值,不想这么麻烦,怎么办呢?Linux早就想到这一点了,于是提供了一个工具devmem,通过devmem就可以直接读写寄存器,devmem是一个命令,在shell中输入devmem命令就可以非常方便的读写寄存器。devmem是一个很常用的工具,主要给驱动开发人员在Linux应用层调试使用。原创 2023-08-18 17:21:18 · 1050 阅读 · 0 评论 -
Linux内核死锁检测工具——Lockdep
死锁是指两个或多个进程因争夺资源而造成的互相等待的现象,如进程A需要资源X,进程B需要资源Y,而双方都掌握对方所需要的资源,且都不释放,这会导致死锁。在内核开发中,时常要考虑并发设计,即使采用正确的编程思路,也不可能避免会发生死锁。递归死锁:如在中断延迟操作中使用了锁,和外面的锁构成了递归死锁。AB-BA死锁:多个锁因处理不当而引发死锁,多个内核路径上的锁处理顺序不一致也会导致死锁。Linux内核在2006年引入了死锁调试模块lockdeplockdep。原创 2023-08-18 16:33:51 · 1139 阅读 · 0 评论 -
Linux系统调试——valgrind内存泄露检测
代码可能存在怎么办?使用valgrind可以对代码进行内存泄露检测。原创 2023-08-18 14:45:38 · 129 阅读 · 0 评论