给定以下代码:
#include <iostream>
int main()
{
std::cout << 5 << std::endl;
std::cout << "Hello World!\n";
}
我在第二个cout
处设置了断点,并在“即时窗口”中尝试
std::cout<<5<<std::endl;
上面写着:
identifier "std::cout" is undefined
我的主要目标是cout
一个变量。对于int, double
这样简单的变量,直接输入名称就可以打印出它的值。但是对于Eigen::Matrix, boost::json::object, torch::Tensor
这样复杂的数据结构,就需要cout
。如果我不能在即时窗口中使用cout
,我就必须用代码编写cout
,并且重新构建项目,这很不方便。
2条答案
按热度按时间2eafrhcq1#
我提出了一个部分解决方案。首先创建一个函数return
string
,然后在即时窗口中调用它。在调试模式下:然后在“立即”窗口中:
将打印结果字符串。注意
> >
中的空格。符号str<Eigen::Matrix<float,-1,-1,0,-1,-1> >
可在Disassembly
窗口中找到。看起来我们可以调用一个有地址的函数。如果它已经被优化了,我们就不能调用它。
经过一些测试,我发现如果有一个成员函数返回一个字符串,那么我可以直接调用该成员:
在
cout
处设置断点,然后在即时窗口中,我可以调用但这仍然没有完全达到我的目标。
woobm2wo2#
要在即时窗口中打印:
1.在工具-〉选项-〉调试-〉常规中设置
Redirect all output window text to the immediate window
,通过Visual Studio Search
查找该选项会更方便。1.#包括<windows.h>
1.在代码段中使用OutputDebugStringA。
要检查变量的值:添加断点并右击变量-〉添加监视。参见Watch variables