嵌入式开发的点滴心得

.在内核里发生错误,可以调用dump_stack();来输出call trace 信息;show_regs()可以打印寄存器信息。
.splint检查C代码的缺陷,valgrind可以检查程序内存使用错误。
.gcc中的-g 和 -O2是可以共存的。 
.msh的不支持的shell 特性:
    .不支持shell变量 加"{}"括起,会提示“unclosed {”。变量比较必须要用双引号括起,例如
     if [ "$TEST" = "1" ]; then
    .不支持变量直接运算,例如:DEVCOUNT=$((DEVCOUNT + 1)),应该用expr命令: DEVCOUNT=`expr $DEVCOUNT + 1`,注意空格。
    .出现“not found”错误,可以检查是不是误用了DOS格式存储脚本文件。
. sh -x 脚本名  可以查看每一步脚本的执行结果,方便调试脚本。 

.linux下使用forkpty()可以重定向子进程的输出;popen()也可以实现。

.Atheros的无线驱动可以用wlanconfig wl0 list查看连接的站点列表。
.linux下用size命令可以看到可执行文件各个段的大小,例如:
    [heym@jupiter ulimit]$ size ulimit
   text    data     bss     dec     hex filename
   1370     272       4    1646     66e ulimit
 
 
./proc/process_id/maps可以看到一个进程的内存映像。
.通过mount -t sysfs none /sys 可以挂载内核的sysfs文件系统;/sys/modules/下面有所有已经装入的模块的信息,包括装入地址等;
.gdb中可以通过命令: l *0x地址 来查看该地址所在的源码, gdb的info命令也可以,或者是用addr2line命令;
.ar -t libxxx.a 可以看到libxxx.a中链接的.o文件列表;objdump  -t libxxx.a或者objdump -T libxxx.so不仅可以看到链接的.o文件
  还可以看到每个.o文件所包含的符号;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值