首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试ARM组件(Neon扩展)

调试ARM组件(Neon扩展)
EN

Stack Overflow用户
提问于 2015-04-29 05:05:47
回答 1查看 1.8K关注 0票数 4

我正在开发一种使用ARM Neon指令的算法。我正在使用汇编程序文件(.S而不是内联的asm)编写代码。

我的问题是,什么是最好的调试目的,即查看寄存器,内存等。目前,我正在使用Android NDK编译,我的安卓手机运行的算法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 08:12:23

可怜人的调试解决方案。

您可以使用gdb / gdbserver远程控制安卓手机上应用程序的执行。我在这里不提供全部细节,因为它们总是在变化,但是,例如,你可以从这个answer开始,或者在互联网上快速搜索。学习使用GDB似乎有一个高陡峭的曲线,但是网上的材料是详尽无遗的。你很容易就能找到符合你口味的东西。

通过软件工具单步完成ARM核心是很难的,这就是为什么ARM生态系统充满了昂贵的工具和额外的HW设备。

我使用的技巧是在汇编代码中手动插入BRK指令。BRK是自托管的调试断点.当core看到这条指令时,它会停止并通知OS有关情况。OS然后将情况通知调试器并将控制传递给它。当调试器获得控制时,您可以检查寄存器的内容,甚至可能对它们进行更改。操作的最后一部分是使您的进程继续进行。由于PC仍然处于断点指令,您必须做的是增加PC,将其设置为BRK之后的指令。

由于您提到了使用.S文件而不是.s文件,您可以利用gcc进行预处理/宏工作。通过这种方式启用、禁用BRK可能会成为较少的问题。

这种工作方式的最大缺点是周转时间。如果您想在gdb中研究某一点,您必须确保有一个BRK指令,这可能需要另一个构建/推送/调试周期。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29934786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档