y****e 发帖数: 23939 | 1 一个C++函数,是关于lapackblas的,可能是从FORTRAN code translate 到c++的。有一个奇怪的bug, 在某些
linux下程序执行毫无问题,但是在某些Linux下,程序会占用100%CPU而且永远不结束。我debug的时候发现,在某一
个程序调用之后打印一点东西,比如说printf("\n"); 只要不是打印空字符串,程序就能顺利执行。
这到底是什么问题呢?是不是memory的问题?为什么打印一点东西程序就正常了呢?为什么只在某些platform下出为题
呢? |
l*****d 发帖数: 359 | |
S*********g 发帖数: 5298 | 3 这个站是C++写得,你想揭发C++的bug
被C++和谐掉了
【在 y****e 的大作中提到】 : 一个C++函数,是关于lapackblas的,可能是从FORTRAN code translate 到c++的。有一个奇怪的bug, 在某些 : linux下程序执行毫无问题,但是在某些Linux下,程序会占用100%CPU而且永远不结束。我debug的时候发现,在某一 : 个程序调用之后打印一点东西,比如说printf("\n"); 只要不是打印空字符串,程序就能顺利执行。 : 这到底是什么问题呢?是不是memory的问题?为什么打印一点东西程序就正常了呢?为什么只在某些platform下出为题 : 呢?
|
t****t 发帖数: 6806 | 4 99.999% your problem. definitely NOT C++'s bug.
use valgrind to debug.
有一个奇怪的bug, 在某些
束。我debug的时候发现,在某一
就能顺利执行。
为什么只在某些platform下出为题
【在 y****e 的大作中提到】 : 一个C++函数,是关于lapackblas的,可能是从FORTRAN code translate 到c++的。有一个奇怪的bug, 在某些 : linux下程序执行毫无问题,但是在某些Linux下,程序会占用100%CPU而且永远不结束。我debug的时候发现,在某一 : 个程序调用之后打印一点东西,比如说printf("\n"); 只要不是打印空字符串,程序就能顺利执行。 : 这到底是什么问题呢?是不是memory的问题?为什么打印一点东西程序就正常了呢?为什么只在某些platform下出为题 : 呢?
|
f*****Q 发帖数: 1912 | 5 我估计lz原意是说C++编的程序里面出了bug,说话快了点。
【在 t****t 的大作中提到】 : 99.999% your problem. definitely NOT C++'s bug. : use valgrind to debug. : : 有一个奇怪的bug, 在某些 : 束。我debug的时候发现,在某一 : 就能顺利执行。 : 为什么只在某些platform下出为题
|
y****e 发帖数: 23939 | 6 写错了,写错了,不是C++的bug,是C++程序的问题,想寻求各位有经验的大侠的建议 |
l**t 发帖数: 64 | 7 既然你都调试了,为什么不跟进去看看cpu100%时执行的是什么代码,一般跟进去基本
就能知道问题原因
某些linux下能正常运行并不表示程序没问题,因此,这个程序肯定是有问题的
printf的测试不容易看出问题,可能是程序多线程运行共享数据未作保护导致的,也可
能是程序本身内存越界问题,不同的操作系统、编译器对堆栈的设置的大小都是不同的
,使得越界访问造成的后果也不同,当然还有更多的可能性
但是归根结底一句话,你的程序有问题
LAPACK直接用fortran版的不是很好么,C++里也能调用啊,在矩阵传进去前转置一下,
算完后再转置回来就能避免矩阵按行存储和按列存储的差异,而且你在linux下用GCC的
编译器,不同语言交叉编译非常方便啊
我在windows下就用的C++调用fortran版的lapack,用了boost.ublas boost.bindings
lapack atlas,很方便。
有一个奇怪的bug, 在某些
束。我debug的时候发现,在某一
就能顺利执行。
为什么只在某些platform下出为题
【在 y****e 的大作中提到】 : 一个C++函数,是关于lapackblas的,可能是从FORTRAN code translate 到c++的。有一个奇怪的bug, 在某些 : linux下程序执行毫无问题,但是在某些Linux下,程序会占用100%CPU而且永远不结束。我debug的时候发现,在某一 : 个程序调用之后打印一点东西,比如说printf("\n"); 只要不是打印空字符串,程序就能顺利执行。 : 这到底是什么问题呢?是不是memory的问题?为什么打印一点东西程序就正常了呢?为什么只在某些platform下出为题 : 呢?
|