在MIPS Linux中追溯时,GDB如何find函数的符号?

在MIPS Linux中追溯时,GDB如何find函数的符号?,第1张

概述在MIPS Linux中追溯时,GDB如何find函数符号

我试图实现一个函数来回溯在内核中崩溃的用户空间进程。 因为我在Kernel工作,所以没有任何库的function,而且提供的backtracefunction不支持MIPS架构。 我只是想知道我是否可以模仿GDB做什么。 内核的版本是2.6.21。

如何使用MinGW gdbdeBUGging器在windows中deBUGgingC ++程序?

在GDB中拆解C函数 澄清GAS大会指示

我如何在GDB中使用shell命令的输出作为GDB命令的参数?

linux的C:容易&'漂亮'转储/结构的打印输出(如gdb) – 从源代码?

内存使用情况:程序分配的内存太多

我想你可以参考oprofile的实现。

Oprofile使用帧指针来获取后台跟踪信息,因此它需要用户空间应用程序及其相关库全部使用帧指针来启用(“ – fno-omit-frame-pointer”选项)。

另一种方式是,如果用户应用程序包含调试信息,则可能需要检查用户应用程序的DWARF信息,DWARF调用框架信息会向调试器提供有关如何调用某个函数的足够信息,以便它可以找到每个参数功能,找到当前的呼叫帧,并找到呼叫信息的呼叫帧。

如果你想简单地抓取没有支持“frame-pointer”的后台跟踪信息或任何调试信息,那么你必须检查用户应用程序的mips指令,循环访问子上下文(SP,IP,RP),以获得父上下文(SP,IP,RP)通过mips ABI规范,这是有点复杂和耗时,因为你不得不反汇编内存中的许多指令,但它并不坏。 例如,对于很多程序来说,在乞讨中有一个“加sp,sp,-32”的指令,你会知道parent的sp是当前的sp加32。

第二个和第三个方法,你必须自己实现它,因为你在内核工作。

核心文件是ELF格式 。 这是一个标准,这是在很多网站上只有一个谷歌提供。

但是,这个文件格式是非trival。 很多怪癖和点点滴滴。 任何合理的人应该使用第三方库。 如果你真的想这样做,从libelf和readelf开始。 祝你好运。

总结

以上是内存溢出为你收集整理的在MIPS Linux中追溯时,GDB如何find函数的符号?全部内容,希望文章能够帮你解决在MIPS Linux中追溯时,GDB如何find函数的符号?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1276996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存