最近用tornado跟踪自己的.a库代码,老是出现代码错位跟踪的情况?
比如原本光标要跳到下一行的,却跳回去跟踪过的代码,有时候出现反复执行情况,还好出行空行处跟踪?
不知道什么原因?
主要是符号表错位了。
一个呢确认编译的时候加了-g选项了,另一个就是在代码里不要出现中文的注释,出现中文注释的情况下很容易出现符号表错位的。尤其是第一行绝对不能出现中文的。
可是我的代码没有中文注释亚,第一行也没有中文的,不知道怎么回事?
主要的就是要编译.a的时候必须加-g选项,还有不能有unicode的字符,包括汉字,注意一下是不是有什么标点符号之类的。
不行的话,先把源代码都加入工程中编译生成,跟踪看看有没有问题,然后再编译成.a
补充两点:
1.有时候,源码不是最新的。要保证全部代码重新编译过。
2.优化选项可能导致执行顺序和C源码不一致。
谢谢您的回复。今天跟踪一般代码时,比如
...........
snmpTraceLevel = traceLevel;
(void) taskDeleteHookAdd ((FUNCPTR) snmpdTaskDelete);
if (snmpGlobalsInit () == ERROR)
{
return (ERROR);
.........
上述代码中,本来执行到第2行时,突然跳到第1行处执行了,不知道怎么回事,我在c/c++compiler处加-g选项:
-g -mcpu=pentium -march=pentium -ansi -nostdlib -fno-builtin -fno-defer-pop -I. -
怎么擦看是否有unicode的字符亚?
首先保证你的.C和.A的一致性,就是说你的 .A是由当前.C生成的。
再次,取消编译过程中的优化选项,选为NONE,应该就没有问题了