c++ - 如何使用 Valgrind 和 Qt Creator 调试远程应用程序?

标签 c++ qt valgrind

我有一个在 Qt Creator(Qt Creator 4.7.0,Qt 版本 5.2.1)中开发的 C++ 应用程序。该应用程序在 beaglebone (debian) 上运行。我正在使用 Qt Creator 的远程调试来调试应用程序。

该应用程序存在一些内存问题,因此我尝试使用 Valgrind 对其进行诊断。每当我从 Qt Creator 开始 Memcheck 分析时,它的所有输出都是:

16:22:58: /usr/local/bin/valgrind --child-silent-after-fork=yes --xml-socket=10.0.2.15:38409 --log-socket=10.0.2.15:43999 --xml=yes --smc-check=all --tool=memcheck --gen-suppressions=all --track-origins=yes --leak-check=full --num-callers=25 --vgdb=yes --vgdb-error=0 /home/debian/MyApp

==28159== Failed to connect to logging server '10.0.2.15:37567'.

==28159== Logging messages will be sent to stderr instead.

==28159== Failed to connect to XML logging server '10.0.2.15:39405'.

==28159== XML output will be sent to stderr instead.

valgrind: m_libcprint.c:384 (prepare_sink_socket): Assertion 'sink->fd == 2' failed.

16:27:13: Analyzing finished.

为了解决前两个错误,我想更改对 valgrind 的调用,使日志记录写入文件。但是,我找不到在哪里更改 Qt Creator 对 valgrind 的调用。 Tools->Options->Analyzer->Valgrind 似乎不允许我更改日志记录行为。

我不知道是什么导致了最后一个错误。 Qt 文档使我似乎只需要按 go 就可以了。

感谢任何帮助!

最佳答案

删除选项 xml-socketlog-socketxml=yes 对我有用。它删除了警告并解决了断言。

关于c++ - 如何使用 Valgrind 和 Qt Creator 调试远程应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866961/

相关文章:

c# - 如何在 .NET 应用程序中使用 C++ 项目?

c++ - Makefile 隐式规则不起作用

c++ - 无法打开fstream C++文件,即使它与.cpp位置相同

ios - 从命令行读取 ios 设备上的应用程序的 qDebug 输出

c++ - 为什么没有声明 putenv()?

c++ - 在 Qt 上如何设置每列 33% 的 3 列布局?

c++ - 使用 valgrind+kcachegrind 缩短分析结果中的函数名称

linux - Valgrind:无法加载可执行程序的共享库

c++ - 如何覆盖CMake中的宏定义

valgrind - 使 valgrind 因堆损坏检查错误而中止?