Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用valgrind和gdb调试多线程程序_C_Multithreading_Debugging - Fatal编程技术网

C 用valgrind和gdb调试多线程程序

C 用valgrind和gdb调试多线程程序,c,multithreading,debugging,C,Multithreading,Debugging,前提是,我正在使用Eclipse。 在我对多线程应用程序进行调试的过程中,我首先运行了valgrind memcheck,它给了我一系列错误,但我无法识别这些错误源于哪些代码行。 然后我创建了一个配置文件,在调试构建中使用valgrind,它给了我一个错误 无效读取,大小为1,指向源代码中允许我修复的行。现在valgrind在调试版本上运行没有给我任何错误,但是如果我尝试在发布版本上运行valgrind,我会得到错误,而这些错误无法精确定位 ==5083== 16 bytes in 1 bloc

前提是,我正在使用Eclipse。 在我对多线程应用程序进行调试的过程中,我首先运行了valgrind memcheck,它给了我一系列错误,但我无法识别这些错误源于哪些代码行。 然后我创建了一个配置文件,在调试构建中使用valgrind,它给了我一个错误 无效读取,大小为1,指向源代码中允许我修复的行。现在valgrind在调试版本上运行没有给我任何错误,但是如果我尝试在发布版本上运行valgrind,我会得到错误,而这些错误无法精确定位

==5083== 16 bytes in 1 blocks are definitely lost in loss record 2 of 4
==5083==    at 0x4C29F90: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5083==    by 0x400F67: main (in /home/crysis/workspace/ReliableUPDserver/Release/ReliableUPDserver)
==5083== 
==5083== 16 bytes in 1 blocks are definitely lost in loss record 3 of 4
==5083==    at 0x4C29F90: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5083==    by 0x400FA1: main (in /home/crysis/workspace/ReliableUPDserver/Release/ReliableUPDserver)
==5083== 
==5083== 512 bytes in 1 blocks are possibly lost in loss record 4 of 4
==5083==    at 0x4C2C080: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==5083==    by 0x400F3E: main (in /home/crysis/workspace/ReliableUPDserver/Release/ReliableUPDserver)
==5083== 
为什么这些错误只在发布版本时出现?我能做些什么来获取更多信息?
还有,我的多线程程序挂起在某个地方,这是找到问题所在的正确方法吗?

Helgrind,是否有帮助?@Suvarna不,我尝试使用Helgrind而不是memcheck运行,调试和发布版本都没有错误尝试按顺序运行代码,这是在单线程模式下进行调试,直到不再遇到错误,然后转到多线程版本。尝试在发布版本中启用调试信息生成。@NickZavaritsky thx,成功了,现在我在主版本中找到了错误。