我们在vc6.0环境下(为了兼容以前的项目,只好采用这个版本),用c语言做了一个的计算引擎,编译成dll,用java调用。有时会出crash,就需要查bug在哪里。
请问这种情况下调试dll有什么好办法?我现在调试时是跑java的程序来调用dll,在c里用printf来输出,但无法断点调试什么的。
6楼 @尼克徐 printf没法看到是因为没有一个标准输出的窗口,可以使用OutputDebugString函数 http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362(v=vs.85).aspx
然后在VS里面的output窗口看输出。
release下会crash,八成是就是使用未初始化的变量。release mode由于优化,调试器里面的数据并不可信,如果能过懂一些编译原理以及汇编代码的话,调试也不难。就你的情况,只有用OutputDebugString把怀疑东西都一个一个打印出来咯