调试程序-开篇

时间:2023-02-20 19:17:15

一直以来对调试程序,总心存芥蒂,无从下手。一方面原因是自己书看的太少,不明白编译器的工作原理。另一方面,从来也不敢尝试,遇到问题总是找不到方向,没有逻辑上的思考能力。

今天把手中存在了快半年的程序(别人的代码),代码没什么问题,主要是版本换了之后,编译的时候总是有些问题。这方面的能力一直欠缺,相信自己一步步的调试,理解,会有进步的。

耗费了一下午的时间,终于把问题解决了。(代码中包含一些常用的静态库,eg,ANN, CHOLMOD库)

现总结如下:

新建自己的VS解决方案之后,加入现有的源文件和头文件后,剩下的就是这些静态库的配置了。

需要注意的是:配置的时候看清楚是在Debug环境下,还是在Release环境下

主要解决两个方面:源程序对头文件和lib文件的依赖性,需要配好。

调试程序-开篇

(1)若头文件配置错误会出现,“无法打开“xyz.h”的出错信息,这时候,需要进入解决方案的属性窗口(配置属性)中,选择VC++目录,进而将头文件所在的位置,放到“包含目录”中。便可解决此类错误。

(2)若出现一大堆linker错误,那就是库的配置出现问题了,这时候,需要进入解决方案的属性窗口(配置属性)中,选择VC++目录,进而将lib文件所在的位置,放到“库目录”中。

如果还没有解决问题,可尝试进入解决方案的属性窗口(链接器属性)中,选择常规,进而到附加依赖项设置中,再次将所有lib文件一一加入到里面,一般便可解决问题。

调试程序-开篇

最后,我调试通过后,出现了栈溢出错误,Stack overflow, 从网上找到了解决问题的方法

进入解决方案的属性窗口(链接器属性)中,选择系统属性,将堆栈保留大小,也就是第五个,后面的空白处输入一个较大的数,例如一千万等,这样便可解决了栈溢出错误。

调试程序-开篇