Valgrind在使用cmake编译时不显示行号

Valgrind在使用cmake编译时不显示行号,c,debugging,cmake,valgrind,C,Debugging,Cmake,Valgrind,我正在使用命令cmake编译我的项目-G代码块-忍者,工作正常,但当我运行valgrind时,它不会显示任何行号。 这是我正在使用的valgrind命令:valgrind-leak check=full-show leak kinds=all-track origins=yes-log file=log.txt./pony_gpExe 以下是一个输出示例: ==5402== Use of uninitialised value of size 8 ==5402== at 0x40447B:

我正在使用命令cmake编译我的项目-G代码块-忍者,工作正常,但当我运行valgrind时,它不会显示任何行号。 这是我正在使用的valgrind命令:valgrind-leak check=full-show leak kinds=all-track origins=yes-log file=log.txt./pony_gpExe

以下是一个输出示例:

==5402== Use of uninitialised value of size 8
==5402==    at 0x40447B: get_double_arr_length (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==    by 0x405184: get_test_and_train_data (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==    by 0x4027B3: setup (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==    by 0x402861: main (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
==5402==  Uninitialised value was created by a stack allocation
==5402==    at 0x405149: get_test_and_train_data (in /home/robbie/Dropbox/MIT/pony_gp_ubuntu/build/pony_gpExe)
不确定这是否有用,但以下是我的主要CMakeLists.txt:

cmake_minimum_required(VERSION 3.4.3)
project (pony_gp)
set(DIR ${pony_gp_SOURCE_DIR})

file(GLOB_RECURSE pony_gp_SOURCES "${DIR}/src/*.c")
file(GLOB_RECURSE pony_gp_HEADERS "${DIR}/include/*.h")

foreach (_headerFile ${pony_gp_HEADERS})
    get_filename_component(_dir ${_headerFile} PATH)
    list (APPEND pony_gp_INCLUDE_DIRS ${_dir})
endforeach()
list(REMOVE_DUPLICATES pony_gp_INCLUDE_DIRS)

include("${DIR}/include/CMakeLists.txt")
include_directories(${pony_gp_INCLUDE_DIRS})
add_executable (pony_gpExe ${pony_gp_SOURCES})

if (CMAKE_COMPILER_IS_GNUCC)

    target_link_libraries(pony_gpExe m)

    find_program(MEMORYCHECK_COMMAND valgrind)
    set(MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full")
    set(MEMORYCHECK_SUPPRESSIONS_FILE "${DIR}/valgrind_suppress.txt")
endif()

include(CTest)
add_test(test pony_gpExe)

我希望您使用-g编译代码,并假设您在Ubuntu或Mac OS中运行代码

试着像这样运行valgrind,这在Ubuntu中起到了作用

valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --dsymutil=yes --log-file="log.txt" ./pony_gpExe. 

我希望您使用-g编译代码,并假设您在Ubuntu或Mac OS中运行代码

试着像这样运行valgrind,这在Ubuntu中起到了作用

valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --dsymutil=yes --log-file="log.txt" ./pony_gpExe. 
您需要告诉cmake生成一个调试可执行文件。如果不查看您的cmake配置,很难告诉您如何执行此操作,但按照默认/惯例,应该是:

cmake -DCMAKE_BUILD_TYPE=Debug
有关更多信息,请参见上的回答。

您需要告诉cmake生成调试可执行文件。如果不查看您的cmake配置,很难告诉您如何执行此操作,但按照默认/惯例,应该是:

cmake -DCMAKE_BUILD_TYPE=Debug

有关更多信息,请参见上的回答。

因此,我不知道为什么,但valgrind开始显示行号。。。我并没有做什么不同的事,但不管怎样,它都是有效的

所以,我不知道为什么,但valgrind开始显示行号。。。我并没有做什么不同的事,但不管怎样,它都是有效的

我添加了这个,但它没有修复它。我应该包括什么来清楚地描述我的cmake配置?CmakeLists.txt?是的,从那里开始。恐怕我对cmake不是很熟悉。这对我来说很有效,而且是我唯一需要让valgrind向我显示行号的更改。我添加了这个,但它没有修复它。我应该包括什么来清楚地描述我的cmake配置?CmakeLists.txt?是的,从那里开始。恐怕我对cmake不是很熟悉。这对我来说很有效,而且是我唯一需要让valgrind向我显示行号的更改。我尝试了这个,但没有解决它。是的,我在Ubuntu上运行这个。它只是打印我的程序的输出。你是否像cmake-G Ninja-DCMAKE_BUILD_TYPE=Debug一样构建?是的,我尝试准确地键入它,但它仍然没有解决任何问题。我尝试了这个,但它没有修复它。是的,我在Ubuntu上运行这个。它只是打印我的程序的输出。你是否像cmake-G Ninja-DCMAKE_BUILD_TYPE=Debug一样构建了它?是的,我试着准确地键入它,但它仍然没有解决任何问题。