C++ c++;调试:从控制台调试语句

C++ c++;调试:从控制台调试语句,c++,visual-studio-code,lldb,tensor,C++,Visual Studio Code,Lldb,Tensor,我正在mac上使用lldb。尝试查看marian库中的中间张量输出 debug(张量“”)等语句;当我将它们放入代码中并运行它们时,它们就会工作(它们显示了一个很好的np数组样式的张量视图),但是当我从调试控制台运行它们时,我会收到以下错误消息 debug(输出,“ads”); 警告:在C++方法中停止,但是“这个”不可用;假装我们在一个通用的上下文中 错误::1:1:调用“调试”时没有匹配的函数 调试(输出,“ads”); ^~~~~ 注意:候选函数不可行:第二个参数没有从“const cha

我正在mac上使用lldb。尝试查看marian库中的中间张量输出

debug(张量“”)等语句;当我将它们放入代码中并运行它们时,它们就会工作(它们显示了一个很好的np数组样式的张量视图),但是当我从调试控制台运行它们时,我会收到以下错误消息

debug(输出,“ads”);
警告:在C++方法中停止,但是“这个”不可用;假装我们在一个通用的上下文中
错误::1:1:调用“调试”时没有匹配的函数
调试(输出,“ads”);
^~~~~
注意:候选函数不可行:第二个参数没有从“const char[4]”到“const std::_1::string”(也称为“const std::u 1::basic_string”)的已知转换

有没有办法允许这种交互,或者让张量显示在显示某些局部变量的左侧栏位中?

在源代码中使用该例程时,您尝试调用的例程可以工作,即使该函数接受std::string并传递给它一个C字符串,因为编译器知道如何转换C字符串(lldb的表达式解析器不够聪明,无法像这样进行类型强制

即使尝试这样做很明智,创建模板实例化也不是一个简单的操作,lldb的表达式解析器才刚刚开始学习如何做。如果有一个版本的调试函数采用C字符串,您可以使用它。或者您可以在代码中添加一个实际采用C字符串的包装器您应该能够在表达式解析器中轻松调用

我对marian的了解不够,无法回答你问题的第二部分。这个张量有什么存储空间?它是你感兴趣的函数的参数,是局部变量,还是某个全局存储空间

顺便说一句,表达式解析器说:

warning: Stopped in a C++ method, but 'this' isn't available; pretending we are in a generic context

很可能意味着您正在调试优化的代码,因为在-O0时,编译器通常会使整个函数的
保持活动状态。如果您需要调试优化的版本,例如,因为未优化的代码太慢而无法使用,那么这就是您的命运。但在调试优化的代码时,您通常无法访问当您在源代码中使用它时,您尝试调用的例程可以工作,即使该函数接受std::string并传递给它一个C字符串,因为编译器知道如何转换C字符串(“ads”)lldb的表达式解析器不够聪明,无法像这样执行类型强制

即使尝试这样做很明智,创建模板实例化也不是一个简单的操作,lldb的表达式解析器才刚刚开始学习如何做。如果有一个版本的调试函数采用C字符串,您可以使用它。或者您可以在代码中添加一个实际采用C字符串的包装器您应该能够在表达式解析器中轻松调用

我对marian的了解不够,无法回答你问题的第二部分。这个张量有什么存储空间?它是你感兴趣的函数的参数,是局部变量,还是某个全局存储空间

顺便说一句,表达式解析器说:

warning: Stopped in a C++ method, but 'this' isn't available; pretending we are in a generic context
很可能意味着您正在调试优化的代码,因为在-O0时,编译器通常会使整个函数的
保持活动状态。如果您需要调试优化的版本,例如,因为未优化的代码太慢而无法使用,那么这就是您的命运。但在调试优化的代码时,您通常无法访问e调试器,以调用代码中定义的所有变量