注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

笨笨猫

 
 
 

日志

 
 

如何获取linux arm 应用程序寄存器现场  

2013-06-06 15:27:53|  分类: 嵌入式开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

分类: LINUX

    本来说在arm上获取寄存器的值是因为需要调试一个很古怪的问题,而在自己的机器上测试的386结构的代码似乎还不如arm上对register的访问自由。大致的想了想似乎arm上得到寄存器的值很简单的样子。所以之前才说可能在arm上会比较简单。结果今天上午一试还是当头一棒,毕竟还是对arm asm不太熟悉的结果,反而是磕磕碰碰的不太顺利,不过好歹还是搞清楚了。
    其间还一度对arm的设计产生的怀疑,不过最后看来看去还是发现arm asm的功能啊什么的还是很8错的,哈哈。

    自己做一个能够有易于使用的,能够在arm linux平台上在kernel和user space都可用的监视寄存器值的手段,就出了一个不算完善的东东,有些东西也是复习复习,也还没有测试完善,在kernel中使用的话可能还有些需要修改的东西吧。暂时收录起来:

如何获取linux arm 应用程序寄存器现场 - 笨笨猫 - 我的博客

    使用的时候可以把宏放到一个头文件里面就可以直接使用了。现在还有一点不爽的就是还需要一个特定数据类型的变量作为宏的参数传入,如果传入的数据类型长度小于所位于的平台的位数,就会产生“令人迷惑的结果”。所以使用的时候依赖于不同的平台了。对于arm,传入的参数的类型最好还是:unsigned long吧。如果定义成u32或者u64等等也行,只要和reg的长度相符合就可以了。

    同样,在编译的时候加上优化的参数:-O(默认的优化级别似乎就是2,当然禁止优化就用-O0了。哈哈)。
       1.如果是为了调试用的话,加上-g可能会有更好的效果。
       2.似乎-finline-functions也是不太令人欢迎的选项。

    嗯,大概就是这些吧,如果在kernel中使用的话,可以做成一个module,或者就是一个头文件就搞定,等下一阶段如果要调试kernel module的时候有用到再说了。

    收工看书去也。
  评论这张
 
阅读(861)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017