当前位置: 首页 > 知识库问答 >
问题:

c++ - C++项目FEBioStudio(ui 应用程序)中std::cout输出不显示,如何调试?

华坚成
2024-08-23

问题描述:
在对大型开源代码 FEBioStudio 这个项目进行修改代码时,我点击了自己添加的一个功能后发生错误,发生的这个难以定位的错误造成了assert操控的强制退出。
因为原代码使用了多个assert,很难找到是哪个assert附近出现了问题,而且assert没有输出错误描述。

使用的编程语言与ide:
c++,并且在VS 2022上修改代码,在CLion上编译和运行(CLion 相比cmake+VS 起的作用没有区别)。

目的:我想定位发生的错误,并且解决。

采用的方法:
因为不会c++标准库的日志log,于是对涉及的函数们添加了多条std::cout语句,用以输出自定义信息。但是,在CLion编译时,窗口不显示我写的输出语句,分别尝试了run 和debug ,但是对应的窗口都没有。

可能的原因:
这个项目成功编译后产生的是ui界面,我猜测是因为这个,所以cout没有作用。



问题:

  1. 请问怎么实现定位这个错误、并且解决呢?
  2. 还是想用std::cout来定位错误,怎么干才能让我能够看到std::cout输出的信息呢?
  3. 用c++标准库的哪个日志性能最好呢?
    我查找网络+资料,目前没有找到c++标准库自带的日志,只有别人编写的。
    所以我是用的google log,但是VS 报错274个错误。明明我已经把include和lib放在了工程的正确位置,vs中也添加了include和库路径,但是googlr log的文件还是报错,vs也找不到他的函数。

我真的不知道应该怎么办了,尝试了能够想尽的一切办法了。求助技术大牛!!

共有2个答案

淳于飞文
2024-08-23

sdplog还行,不过我觉得你实在看不到输出日志,何不将日志输出到文件中?

陶健
2024-08-23

1、GUI程序可以使用OutputDebugString来查看cout内容;
2、Visual Studio不支持std:cout作为非控制台应用程序的调试工具;
3、直接使用ofstream保存吧。

 类似资料:
  • 在C语言中,我们通常会使用 scanf 和 printf 来对数据进行输入输出操作。在 C++语言中,C语言的这一套输入输出库我们仍然能使用,但是 C++ 又增加了一套新的、更容易使用的输入输出库。 【例1】简单的输入输出代码示例: 运行结果如下(↙表示按下回车键): Please input an int number: 8↙ The int number is x= 8 Please inpu

  • 主要内容:C++ cout成员方法格式化输出,使用流操纵算子格式化输出在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留 2 位小数,再比如以十六进制的形式输出整数,等等。 对于学过 C 语言的读者应该知道,当使用 printf() 函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如 %.2f 表示输出浮点数时保留 2 位小数,%#X 表示以十六进制、带 0X 前缀的方式输出整数。 关于 printf()

  • 所以当我在选项1中输入我的输入后,我选择继续。我的输入信息在选择选项2时消失了。我刚开始我的编程课程,所以请给我很多建议。这是这里的输出输入图像描述

  • 只是想知道是否有人能向我解释这种行为?是意料之中的吗?我需要使用std::fixed来强制打印双打吗?

  • std::cout是std::ostream的一个实例。我可以在一个名为usr/include/c/7/iostream的文件中看到std::cout的声明: 而std::ostream由typedef std::basic\u ostream定义 此外,您似乎无法创建std::ostream的实例。请参阅此演示代码片段: 以下是编译器对上述代码段的抱怨: 问题来了,因为

  • 问题内容: 我有一个始终返回“ PRINT”命令的SQL过程,我想提取此“ PRINT”命令的输出,即C#中的过程,我该怎么做?这是程序 问题答案: 您需要订阅活动。 MSDN在这里有一些示例代码。

  • 我是Spring靴的初学者。我制作了简单的crud应用程序,但在编译项目时没有任何错误,但在浏览器中看不到输出。我不知道为什么。 只有这样显示才能在浏览器中看到输出。我不知道为什么。 员工控制员看起来像这样 Index.html porm.xml spring.jpa.hibernate.ddl-car=无 spring.datasource.url=jdbc:mysql://localhost:

  • 我正在创建一个带有两个nsarray的简单tableView。第一个数组包含标题,第二个数组包含图像名称。一切正常。但是行分隔符在tableview中的图像后会显示一些空格(参见第一个屏幕截图),而它应该显示为没有空格(如第二个屏幕截图)。 第一张截图 第二张截图 我尝试了不同的方法,但遇到了相同的问题(在iOS8设备上测试)。 我做错了什么?