Popen 崩溃 Qt 调试器

Posted

技术标签:

【中文标题】Popen 崩溃 Qt 调试器【英文标题】:Popen crashes Qt debugger 【发布时间】:2019-12-13 17:46:21 【问题描述】:

我正在尝试构建一个应用程序,该应用程序向我显示有关我机器上不同资源的多个小部件。在代码中,我使用 popen() 运行命令并获取其输出,以显示在我的小部件上。

但是,当我尝试在调试模式下运行它时,在第一次出现 popen 时,调试器会停止,并且应用程序的行为就像在没有调试器的情况下启动一样。它没有关闭,部分代码没有运行,没有调试器我无法弄清楚为什么。

我使用的是 Qt 版本 5.13.2。 这是导致调试器停止的一个示例。

    char s[500];
    char cmd[20]="ifconfig ";
    strcat(cmd,_currentNIC._nicName.toStdString().c_str());
    strcat(cmd," ");
    FILE* pip=popen(cmd,"r");
    fgets(s,499,pip);

【问题讨论】:

您混淆了 Qt Creator(最新版本是 4.10),它是一个带有 Qt 框架 (5.13.2) 的 IDE。 【参考方案1】:

在代码中,我使用 popen() 运行命令并获取其输出,以显示在我的小部件上。

由于widget建议你不仅使用Qt Creator作为IDE,还使用Qt框架,我建议你使用QProcess。

Qt 是一个非常酷的多平台框架,因此如果您不必使用系统特定的 API,您应该避免使用它。


第二件事是使用ifconfig。您不必使用命令行工具来获取此类信息。 Qt 提供 API 来提供此类信息,请参阅QNetworkInterface


您还可以向 Qt Creator 项目报告错误。

【讨论】:

以上是关于Popen 崩溃 Qt 调试器的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 设置 PYTHONPATH 后 CDB 崩溃

从第三方 DLL 调用 Qt 中的函数在调试模式下工作,在发布时崩溃

Qt程序调试之Q_ASSERT断言(条件为真则跳过,否则直接异常+崩溃)

Qt Creator 在尝试运行 OpenCV 程序时崩溃。 [ntdll.dll 崩溃]

Qt软件调试技巧

在 Qt 容器中使用 STL 算法