使用QtCreator在C++中调试动态加载库

Debugging a dynamically-loaded library in c++ with QtCreator(使用QtCreator在C++中调试动态加载库)
本文介绍了使用QtCreator在C++中调试动态加载库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个在Linux上使用qtcreator动态加载共享库插件的应用程序。 插件构建在一个单独的文件夹中,然后复制到主应用程序插件文件夹中。应用程序在启动时查找并加载插件。

插件和可执行文件都构建在单独的CMake项目中(在调试配置中),这些项目加载到我的qtcreator会话中。

调试器似乎无法将库与源代码文件链接。这有两个影响 *我放在插件文件上的断点被忽略 *如果我在插件代码中放置"代码断点"(即asm int 3),调试器会向我显示错误(而不是源代码)。

如何告诉调试器查找正确的源文件?

推荐答案

您可以根据函数名等在库中设置断点。要查看断点的源代码,必须使用调试符号(如qmake CONFIG+=DEBUG)对库进行编译,编译后不能移动源代码。我认为破解文件和行号也需要消息来源。 如果您仍然遇到问题,我会尝试将源目录添加到INCLUDEPATH,或者在运行时在QtCreator中加载这两个项目。

这篇关于使用QtCreator在C++中调试动态加载库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

socks4 with asynchronous boost::asio(带有异步Boost::ASIO的socks4)
Boost ASIO HTTP client POST(增强ASIO HTTP客户端开机自检)
asio::strandlt;asio::io_context::executor_typegt; vs io_context::strand(Asio::strandlt;asio::io_context::executor_typegt;VS io_CONTEXT::Strand)
What#39;s the difference between asio::io_context and asio::thread_pool?(ASIO::IO_CONTEXT和ASIO::THREAD_POOL有什么区别?)
How to use boost::asio with Linux GPIOs(如何在Linux GPIO中使用Boost::ASIO)
Boost asio io_service vs io_context(增强ASIO io_服务与io_Context)