我在实习期间遇到了一个奇怪的问题。我的工作是在c++中使用VTK编码,我在OSX 10.8.3上工作。
当我想调试我的程序时,我运行gdb并使用指令"file"来加载我的程序,然后我使用"list"来显示源代码,并按行号设置断点。问题来了:这个奇怪的gdb显示了一个VTK头文件的源代码,我甚至没有包括在我的源代码中!
我的程序名是read我试图使用gdb read
然后break read:15
设置一个断点,但gdb显示"no source file named read
",这是荒谬的!我注意到gdb在我的ubuntu 12.04中工作得很好,当我在linux的gdb中使用file read
时,它只是显示
Reading symbols from /Users/apple/Dev/VTKRead/bin/bin/read...done.
但是在OSX 10.8.3的gdb中显示
Reading symbols for shared libraries ......... done
Reading symbols from /Users/apple/Dev/VTKRead/bin/bin/read...done.
我想这就是原因,我试图通过在macport中安装gcc4.8来改变编译器来解决问题,但cmake似乎只接受苹果的gcc。
但是GDB显示"没有命名为read的源文件",这是荒谬的!
这是一点也不荒谬:你很可能没有有一个叫做read
的源文件。你有的可能叫做read.cc
,或者read.cpp
,所以试试break read.cc:15
。
这是我的错误:我没有将ccmake中的构建标记设置为"debug",因此编译器没有将信息写入文件