gpt4 book ai didi

c - 获取 C 符号的类型信息

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:57 25 4
gpt4 key购买 nike

让我试着先介绍一些背景知识。我正在使用一些微 Controller (AVR) 进行一些项目,我正在通过一些接口(interface) (UART) 访问它。我正在直接写入它的全局变量,我还能够直接执行函数(写入参数、触发执行、读回返回值)。

AVR 代码是用 GCC 工具链编译的 C 语言。与之通信的 PC 正在运行 python 代码。截至目前,我已经通过解析“objdump -x”输出轻松地将地址和大小信息导入 python。现在,关于符号类型的信息(结构元素的类型和大小、枚举值、函数参数和返回值,...)将极大地促进我的发展。

不知何故,这似乎是人们每天都会做的一件很平常的事情,一开始我天真地期待现成的 python 工具。嗯,没那么容易。到目前为止,我已经花了很多时间研究如何实现这一目标的各种方法。一种方法是只解析 C 代码(使用例如 pycparser)。但似乎我至少必须“预解析”代码以排除各种不受支持的构造和各种排序问题等等。此外,理论上,问题在于编译器是否会进行一些优化,如结构或枚举重新排序等。我也一直在研究各种 gcc、gdb 和 objdump 选项以获取此类信息。花了一些时间寻找从各种调试格式(dwarf、stabs)中提取信息的工具。到目前为止我得到的最接近的是使用 objdump -g 选项转储 stabs 调试信息。这会输出类似 C 的信息,然后我将使用 pycparser 或自己解析这些信息。

但在我花时间这样做之前,我决定在这里提出一个问题,强烈希望有人会用我没有想到的可能完全不同的方法来打击我。

最佳答案

有一个非常好的工具叫做 c2ph转储类型和大小的可解析描述(使用调试信息作为源)

关于c - 获取 C 符号的类型信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com