我最近发现了这个项目,该项目主要使用C语言编写,API仅包含少量C函数。不幸的是,该项目似乎存在一些漏洞,特别是我不断收到“double free or corruption”错误。我正在尝试使用valgrind和gdb查找问题所在,问题似乎出现在内存分配器中。不幸的是,第一个valgrind错误发生在一个长达约400行的预处理器宏定义的头文件中。不幸的是,gdb无法在生成的代码上打断点。堆栈跟踪也不是非常有用。是否有任何技术可以用来处理这些类型的错误?
我最近发现了这个项目,该项目主要使用C语言编写,API仅包含少量C函数。不幸的是,该项目似乎存在一些漏洞,特别是我不断收到“double free or corruption”错误。我正在尝试使用valgrind和gdb查找问题所在,问题似乎出现在内存分配器中。不幸的是,第一个valgrind错误发生在一个长达约400行的预处理器宏定义的头文件中。不幸的是,gdb无法在生成的代码上打断点。堆栈跟踪也不是非常有用。是否有任何技术可以用来处理这些类型的错误?
gcc -P
或cl.exe /E
离线执行相同的操作。
#line
指令,并调试该预处理代码。 - Serge Ballesta