s********e 发帖数: 158 | 1 我在用gdb调试c++ template的时候没法设置确切的断点,比如我break foo.h:10 实际
设置到了foo.h:14,怎么操作都没法设置到第10行,但是单步调试next下一行都没有问
题,直接break到template函数的入口也没有问题,也可以next到我要设置断点的目标
行,可是就是不能直接设置到那一行,不知道具体是什么原因。这个问题严重的降低了
我的debug效率,google它也没有什么结果。我实际使用的是idb在gdb模式下。非常感
谢各位指教,谢谢。 |
p***o 发帖数: 1252 | 2 第10行上有啥? 第14行上是啥?
【在 s********e 的大作中提到】 : 我在用gdb调试c++ template的时候没法设置确切的断点,比如我break foo.h:10 实际 : 设置到了foo.h:14,怎么操作都没法设置到第10行,但是单步调试next下一行都没有问 : 题,直接break到template函数的入口也没有问题,也可以next到我要设置断点的目标 : 行,可是就是不能直接设置到那一行,不知道具体是什么原因。这个问题严重的降低了 : 我的debug效率,google它也没有什么结果。我实际使用的是idb在gdb模式下。非常感 : 谢各位指教,谢谢。
|
s********e 发帖数: 158 | 3 没什么特别的东西,都是变量定义
double *xfn = foo->x;
....
double * = foo->y; |
p***o 发帖数: 1252 | 4 有可能是优化掉了,你用的什么编译选项?
【在 s********e 的大作中提到】 : 没什么特别的东西,都是变量定义 : double *xfn = foo->x; : .... : double * = foo->y;
|
s********e 发帖数: 158 | 5 我用的是icpc 11.1,调试是用idb在gdb模式下,我应该加-O0吗
icpc -w -I. -ansi -m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -DDEBUG
-Wall -Wformat -Woverloaded-virtual -DUSE_IML -D_LINUX_ -DSYSV -DSTL -
DCGNS -DDTF -c foo.cpp -o foo.obj
|
p***o 发帖数: 1252 | 6 你先用g++试试看有没有同样的问题。
DDEBUG
-
【在 s********e 的大作中提到】 : 我用的是icpc 11.1,调试是用idb在gdb模式下,我应该加-O0吗 : icpc -w -I. -ansi -m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -DDEBUG : -Wall -Wformat -Woverloaded-virtual -DUSE_IML -D_LINUX_ -DSYSV -DSTL - : DCGNS -DDTF -c foo.cpp -o foo.obj :
|
s********e 发帖数: 158 | 7 哦,不好意思,我也想到比较一下g++,可以代码里面有第三方库貌似用了intel的编译
器编译的,我用g++就报链接错误, 找不到_intel_fast_memcpy
dtflib-7.8/libDTF.a(dtf.o): In function `dtf_read_zi_zone_ss':
dtf.c:(.text+0x2b35): undefined reference to `_intel_fast_memcpy'
dtf.c:(.text+0x2b59): undefined reference to `_intel_fast_memcpy'
dtf.c:(.text+0x2b7d): undefined reference to `_intel_fast_memcpy'
dtf.c:(.text+0x2ba1): undefined reference to `_intel_fast_memcpy'
dtflib-7.8/libDTF.a(dtf.o): In function `dtf_read_zi_ss':
dtf.c:(.text+0x363e): undefined reference to `_intel_fast_memcpy'
dtflib-7.8/libDTF.a(dtf.o):dtf.c:(.text+0x3664): more undefined references
to `_intel_fast_memcpy' follow |
s********e 发帖数: 158 | 8 测试了一下用g++就好了,用了intel的libirc.a解决了_intel_fast_memcpy的问题,
然后用g++编译的程序用gdb就好了,貌似是intel的问题,大家都用intel的编译器和
idb吗,如果对template支持这么差,怎么用?还有idb不能tab补全, |