日期:2014-05-16  浏览次数:20536 次

【GDB的BUG】文件名中的数字导致调试错误。(附C-Free完全删除手册)

 教训:使用GDB的时候,调试的目标文件名不要由数字开头,中间不要有空格。

 本人因为ACM竞赛需要,机器上的C++编程环境为:C-Free 5 / CDT+Eclipse +MinGW编译器, 最近发生了不进入断点的问题,如下图所示:


直接全部忽略了,让我十分拙计。。怀疑是编译器的问题,把自带的MINGW卸掉,在网上下载了MINGW的5.16版本(不得不说,这个的官网——scorceForge被天朝墙了,翻墙的话Goagent无法管到自动下载器,对此只能说吾皇圣明),重新安装依然无效。

又单独卸载GDB,重新安装,依然无效。奇怪的是,如果不使用IDE,不用自带的调试的话,直接在命令行中操作是没有问题的。

后来发现C-FREE调用的参数存在问题——

从这里可以看出,反复提示Function "1" not defined,可是我并没有定义任何参数为1的函数啊。。。后来偶尔将文件名改成不带数字的,问题解决了。后来经过反复试验,证明了GDB对部分中文名和数字名的CPP文件支持的不到位,会出现无法调试的问题。

另外,C-FREE对轻量级开发和竞赛而言,是一个很不错的编译器。但是删除比较麻烦,有的时候会出现窗口错乱的问题,重装无效。下面给出完整的删除方法。

1、使用自带的程序删除,并删除该安装文件夹下所有文件。

2、在C:\Users\Administrator\Documents中找到C-FREE目录,全部删除。

3、C:\Users\Administrator\AppData\Roaming中找到C-FREE目录,全部删除。

4、在注册表(regedit)中找到HKEY_CURRENT_USER-Software-C-free目录,全部删除。

5、在注册表(regedit)中的HKEY_CLASSES_ROOT项下,找到CFree.c,CFree.cfp,CFree.cfpg,CFree.cpp,CFree.cpp,CFree.h,CFree.hpp项,并删除。

至此,重新安装C-FREE,便可解决一切问题,是真正的重装。