- 博客(7)
- 收藏
- 关注
原创 利用gdb远程调试驱动模块
在前面的文章中我总结了gdb远程调试内核的大致过程,由于一开始利用kgdb就是想调试自己的驱动模块,所以,这里我对怎么利用gdb远程调试驱动模块做一个总结。 其实调试驱动模块和调试内核的过程是完全一样的,但是调试驱动模块一个很重要的地方就是驱动的初始化的调试很困难,这我在下面会详细说明原因。 通过两天的摸索,我感觉虽然gdb可以远程调试内核,但是由于调试内核相对于调试普通程序的
2016-07-28 17:15:33 3535
原创 gdb远程调试过程
在另一篇文章里已经介绍过如何编译安装可以远程gdb调试的内核,在这里我们就来详细介绍一下图和利用gdb远程调试内核和驱动。 网上有很多关于gdb远程调试内核的文章,但是很多文章都说得很杂,而且很多都是利用主机来调试嵌入式的开发板,我们这里说的是利用主机去调试另一台主机的内核和驱动模块。 1,硬件条件 两台主机,一条RS232母对母交叉线(由于主机上的RS232串口线都
2016-07-27 20:37:56 2854
原创 linux重新编译内核
在写驱动程序的过程中,单纯用printk进行前期调试,很是复杂,很难定位错误在什么地方,而内核层的代码是不能像普通程序那样直接利用gdb进行调试的,但是这里说的只是在一台计算机上不能一边运行驱动,一边运行gdb;但是如果有两台计算机,就可以了。一台计算机当作目标机,运行要调试的驱动,另一台计算机当作开发机,运行gdb。 但是要想目标机支持远程gdb调试,目标机的内核就必须支持这种操作,这
2016-07-27 16:04:32 6857
原创 如何解决有限无限同时上网的问题
在学校实验室中,通常会连接实验室服务器,但是如果用有线连接到服务器,当你的上网帐号是计流量的方式时,连接到服务器上的其他人也可以使用你的流量,这样一个晚上能跑几个G的流量;而如果只是用无线上网的话,服务器就连不上。 这里的解决方案是,可以设置特定的目标网络地址经过服务器的路由,而其他网络目标地址经过无线的路由,这样就不会造成流量的偷用。设置方法如下: 运行管理员权限运行cmd,
2016-07-23 09:56:36 599
原创 c++ 流的注意事项
1,输入输出缓冲区 每个输出流都有一个缓冲区,用来保护程序读写的数据,有了缓冲区,输出的数据可能不会立即写入到文件中,操作系统可以将程序的多个输出操作组合成单一的系统级写操作。由于设备的写操作可能很耗时,所以允许操作系统将多个输出操作组合为单一的设备写操作可以带来很大的性能提升。 导致输出流(即,数据真正写到输出设备或者文件)的原因有很多: ---程序正常结束,作为m
2016-07-08 15:46:07 708
原创 C++ 类的注意事项
1,explicit关键字 在类的构造函数中,当构造函数只有一个输入变量时,如果不加入explicit关键字,那么它实际上定义了转换为此类类型的隐式转换机制,例如下面的代码: class Sales_data { friend Sales_data add(const Sales_data&, const Sales_data&); friend std::istream
2016-07-08 15:01:55 760
原创 Clang编译时的问题汇总
1, test.cpp:(.text+0xc): undefined reference to `std::cout'test.cpp:(.text+0x22): undefined reference to `std::ostream::operator<<(int)'test.cpp:(.text+0x2a): undefined reference to `std::basic_ostr
2016-07-07 21:58:00 4286 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人