编译器怎么能够输出结构体成员的符号信息和地址

binbinyantai 2014-12-20 11:34:16
各位大神:

请问visual studio 的编译器能够输出结构体成员的符号信息和地址吗?我查看map文件,里面只有结构体的基地址信息,没有其成员的信息。

例如

struct myStruct
{
int a ;
int b;
}
struct myStruct Tmy;

在map文件中只有Tmy的符号信息和地址,但是没有变量a,b的符号信息和地址。

请问怎么才能够提取这些信息呢?在visual studio中可以设置编译器的选项满足我的要求吗

...全文
433 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_dragon_fly 2014-12-23
  • 打赏
  • 举报
回复
是想知道结构内成员的偏移吗? 直接在VC里面看不就可以了
一根烂笔头 2014-12-23
  • 打赏
  • 举报
回复
换GCC试试
Saleayas 2014-12-23
  • 打赏
  • 举报
回复
SymGetTypeInfo
  • 打赏
  • 举报
回复
引用 2 楼 wangbinyantai 的回复:
[quote=引用 1 楼 q3733353520 的回复:] VS 没用过, 不过 你可以根据首地址和内存来计算,比如int 占4个字节
您好,谢谢您的回复,地址好办,主要是结构体内部变量的符号表示怎么获取?例如怎么获取Tmy.a,Tmy.b等字符串信息[/quote] 值就存在地址。。。,而且 一般 你printf的是不会骗你的
lm_whales 2014-12-22
  • 打赏
  • 举报
回复
编译器编译的时候, 会储存符号和地址的对应关系, 包括结构体信息,这一类的东西。 调试版,可以把一部分信息储存在 .exe,.dll 内部 VC 可以储存在vc90.pdb 等 *.pdb内部 调试的时候,就可以查看这些信息了 当然,也可以完全不储存,任何这一类的信息 所以这一功能, 只能是编译器厂家,做到编译器内 编译器外部,实现这个功能, 难度要大得多, 甚至几乎是不可能的 换句话说,你要实现一个调试器类似的东西,最好有编译器配合 要不然,你就要去了解编译器,具体的实现方案,了解每个细节 脱离编译器,直接实现是很有挑战性的。
binbinyantai 2014-12-21
  • 打赏
  • 举报
回复
引用 1 楼 q3733353520 的回复:
VS 没用过, 不过 你可以根据首地址和内存来计算,比如int 占4个字节
您好,谢谢您的回复,地址好办,主要是结构体内部变量的符号表示怎么获取?例如怎么获取Tmy.a,Tmy.b等字符串信息
  • 打赏
  • 举报
回复
VS 没用过, 不过 你可以根据首地址和内存来计算,比如int 占4个字节

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧