首页
社区
课程
招聘
[旧帖] [原创]C++调试信息详解---解开人们心中的困惑 0.00雪花
发表于: 2010-1-4 18:05 1453

[旧帖] [原创]C++调试信息详解---解开人们心中的困惑 0.00雪花

2010-1-4 18:05
1453
在程序的调试过程中,难免会出现这样或那样的错误。对于一些简单的错误我们很容易识别,而对于错误的提示,往往一些奇怪的字符串让我们头痛。如下图:

这一串似懂非懂的字符串到底是什么意思呢?
        在一次学习汇编与C混合编程的过程中,我意思到了这个问题的严重性,于是我去查了一下MSDN,结果里面没有(最近的版本有没有我不知道,反正我的没有)。于是我根据那本书上讲的原理,把这方面的资料通过实例程序找了出来。可以利用VC环境编译选项生成.map文件,然后通过观察.map文件的内容,经过一一甄别得到如下内容。正因为我在网上没有见到类似的东西,故以此与大家分享。
(如下数据是一个2列的表格,显示效果不好,请多多包含)
类型        符号表示
Char        D
Unsigned char        E
Short        F
Unsigned short        G
Int        H
Unsigned int        I
Long        J
Unsigned long        K
       
Float        M
Double        N
&        AA
*        PA
[]        QA
多维数组(数组的最大维数是11,分别用Y0-Y9表示)        第一维是默认的,无需标记,第2-11维都要标记,分别用数字加上@符号表示。数字1-14的单独表示为1-9,L-P.而后面的数字则采用16进制表示,为A-P,如15(BA),20(BE),32(CA),例子:int [][20][30]-----QAY1BE@BO@H
结构(用U和@@表示)        如定义了time结构,则time t对应Utime@@
多结构多参数(此次参数为&,*,**,[]等附加标志)        在这种情况下,都采用简化表示法:1-每遇到一种新的结构,采用上述方法定义;2-遇到带旧附加标志旧结构,则用阿拉伯数字表示(从0开始),这些数字是这样产生的--------定义2个变量cnt=0,num=0,在编译参数列表时,每遇到一个新结构,cnt++,num++;每遇到一个带新附加标志的旧结构,cnt++。而简化表示就是用cnt代替的。3-每遇到带新附加标志的旧结构,则在U前面加上附加标志的符号表示,在U后面加上num@@。如下例中的time &表示为AAU2@。举例: 对于参数列表(stu a,stu b,time c,time &d,time e,time & f),其对应的编译结果是Ustu@@ 0 Utime@@ AAU2@ 1 2
类        V+类名+@@
普通成员函数        ?+函数名+@@+参数列表编译结果+@Z
类的成员函数        ?+函数名+@类名+@@+参数列表编译结果+@XZ
Void        X
Bool        _N

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1849
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习了,感谢楼主提供。
2010-1-4 19:41
0
雪    币: 137
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼主分享
2010-1-5 12:08
0
游客
登录 | 注册 方可回帖
返回
//