8421|15

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

VS2005里面调试的时候怎么看全局的静态变量(局部变量看起来很简单)?看内存?那全局的静态变量在内存里面的地址怎么计算? [复制链接]

VS2005里面调试的时候怎么看全局的静态变量(局部变量看起来很简单)?看内存?那全局的静态变量在内存里面的地址怎么计算?看EXE文件对应生成的MAP文件吗?

最新回复

KAN O KAN  详情 回复 发表于 2010-1-28 11:03
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
static        HANDLE hPort;在MAP文件里面应该是下面的那一段?


Start         Length     Name                   Class
0001:00000000 0002e7fcH .text                   CODE
0001:0002e7fc 000007acH .text$yc                CODE
0001:0002efa8 000001dcH .text$yd                CODE
0002:00000000 00000004H .CRT$XCA                DATA
0002:00000004 0000000cH .CRT$XCC                DATA
0002:00000010 00000060H .CRT$XCL                DATA
0002:00000070 0000000cH .CRT$XCU                DATA
0002:0000007c 00000004H .CRT$XCZ                DATA
0002:00000080 00000004H .CRT$XIA                DATA
0002:00000084 00000004H .CRT$XIZ                DATA
0002:00000088 00000004H .CRT$XPA                DATA
0002:0000008c 00000004H .CRT$XPZ                DATA
0002:00000090 00000004H .CRT$XTA                DATA
0002:00000094 00000004H .CRT$XTZ                DATA
0002:000000a0 0003119dH .rdata                  DATA
0002:00031240 000000aaH .rdata$debug            DATA
0002:000312ec 00000050H .xdata                  DATA

0002:0003133c 00000034H .xdata$x                DATA


0002:00031370 00000004H ATL$__a                 DATA
0002:00031374 00000004H ATL$__z                 DATA

0002:00031378 00000050H .idata$2                DATA


0002:000313c8 00000014H .idata$3                DATA
0002:000313dc 000004ecH .idata$4                DATA
0002:000318c8 0000008eH .idata$6                DATA
0002:00031956 00000000H .edata                  DATA
0003:00000000 000004ecH .idata$5                DATA
0003:000004f0 00000b20H .data                   DATA
0003:00001010 00000680H .bss                    DATA
0004:00000000 00002d10H .pdata                  DATA
0005:00000000 00001168H .rsrc$01                DATA
0005:00001170 001ac560H .rsrc$02                DATA
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
//我的上面变量是属于类的,看类的就可以了

hPort-------------00074504
g_TotalSFR--------000740c8



0003:000010c0       ?m_QueryPackage@CPublic@@2U_QueryPackage@@A 000740c0     Public.obj
0003:000010c8       ?g_TotalSFR@CPublic@@2U_TotalSFR@@A 000740c8     Public.obj
0003:00001100       ?m_RecQueue@CPublic@@2U_RecQueue@@A 00074100     Public.obj
0003:00001504       ?hPort@CPublic@@2PAXA      00074504     Public.obj
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
看这个内存的话,我觉得最高级的做法是使用IDA反汇编,然后使用二进制查看相应DLL,lib,EXE文件等
这样你很容易找到函数的标号地址。进而找到相应的变量在内存中的地址。——不过这个方法只能看到程序运行到最后的结果吧,不能动态查看。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
静态变量和全局变量一样,是在静态段里,同样看内存就行了。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

6
 
老是分不清下面的一系列东西,他们有什么区别,他们放的地址有什么不同

1.rdata
2.xdata
3.idata
4.pdata
5.bss
6.data
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 xqhrs232 的回复:
老是分不清下面的一系列东西,他们有什么区别,他们放的地址有什么不同

1.rdata
2.xdata
3.idata
4.pdata
5.bss
6.data


这个应该和单片机程序是一样的吧?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
1.rdata  只读的数据段,字符串、常量和调试信息等
2.xdata  异常处理表
3.idata  导入数据段,导入库和导入地址名称表
4.pdata  异常信息段
5.bss    数据段,未初始化的数据,包括所有为static的变量
6.data   数据段,已初始化的数据
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
直接把全局的静态变量名字放到 Watch 里面就可以看到了
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 navi_dx 的回复:
直接把全局的静态变量名字放到 Watch 里面就可以看到了


看类的静态成员变量呢?用你的方法好像不行!在WATCH窗口里面老显示下面的错误


g_TotalSFR        CXX0017: 错误: 未找到符号“g_TotalSFR”       
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 3 楼 gooogleman 的回复:
看这个内存的话,我觉得最高级的做法是使用IDA反汇编,然后使用二进制查看相应DLL,lib,EXE文件等
这样你很容易找到函数的标号地址。进而找到相应的变量在内存中的地址。——不过这个方法只能看到程序运行到最后的结果吧,不能动态查看。

囧。。反编译。。。太难恐怖了。。。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
[url=http://blog.eeworld.net/jacksoon/archive/2008/05/21/2467841.aspx][/url]

找到了一点东西,但没改进,还是看不到!
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

13
 
某个类的静态成员变量难道真的只能看MAP文件,去找对应的内存地址看了?不能做为一个变量被引用?把它做为一个变量拖到WATCH窗口老是提示下面的错误!为什么?想不通啊!静态成员变量的地址是不是写死的,DEBUG的时候不能动态访问?

g_TotalSFR CXX0017: 错误: 未找到符号“g_TotalSFR”
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

14
 
类的静态成员变量编译时做了name-mangling 就是用类名作为修饰符加在变量前面,查看要加类名 CXX::g_TotalSFR
反汇编,太夸张了
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 navi_dx 的回复:
类的静态成员变量编译时做了name-mangling 就是用类名作为修饰符加在变量前面,查看要加类名 CXX::g_TotalSFR
反汇编,太夸张了


太感谢了!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 
KAN O KAN
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
第2场直播:融合热仿真与热测试提升产品可靠性
直播时间:04月17日 14:00 - 15:00

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 12

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表