VS2017在远程Linux上调试-查看字符串 我使用VisualStudio 2017在远程Linux机器上开发C++应用程序。首先,我在远程机器上运行代码,然后使用SSH连接到远程进程。我附加到本机(GDB)代码并点击断点。问题是我无法查看调试器中接收到的字符串的内容 std::string msg_str(static_cast<char*>(incoming.data()), incoming.size());

VS2017在远程Linux上调试-查看字符串 我使用VisualStudio 2017在远程Linux机器上开发C++应用程序。首先,我在远程机器上运行代码,然后使用SSH连接到远程进程。我附加到本机(GDB)代码并点击断点。问题是我无法查看调试器中接收到的字符串的内容 std::string msg_str(static_cast<char*>(incoming.data()), incoming.size());,linux,visual-studio,remote-debugging,Linux,Visual Studio,Remote Debugging,要在VS2017调试器中查看此内容,我需要做什么 编辑 不,我不是用VS编译的。我是用Urho3D引擎开发一个游戏。在Linux机器上,我使用cmake创建makefile,然后使用SSH bash shell中的make编译/链接。在VS中,我会遇到各种各样的构建错误 我一直在到处寻找关于如何建立这个项目的更多信息,但没有结果。我最大的问题是我是一个C开发人员,试图用C++来加速。学习曲线相当陡峭…我认为问题在于,您已经连接到远程进程,而VS不知道它应该查看std::string。您是否能够通

要在VS2017调试器中查看此内容,我需要做什么

编辑

不,我不是用VS编译的。我是用Urho3D引擎开发一个游戏。在Linux机器上,我使用cmake创建makefile,然后使用SSH bash shell中的make编译/链接。在VS中,我会遇到各种各样的构建错误


我一直在到处寻找关于如何建立这个项目的更多信息,但没有结果。我最大的问题是我是一个C开发人员,试图用C++来加速。学习曲线相当陡峭…

我认为问题在于,您已经连接到远程进程,而VS不知道它应该查看
std::string
。您是否能够通过在VS中构建然后执行来运行测试?VS知道它可以看到的源代码是在调试器中运行的吗

看起来QuickWatch中至少有一些字符串是可见的,如
\u M\u p
。您期望的结果似乎不是一个简单的字符串,这可能有一个方向吗

我刚刚试着在VS2017(15.7.3)的QuickWatch中检查
std::string ss(“12345”,5)
,字符串的显示完全符合您的预期。但是我确实从VS编译并运行了(
F5

================6月18日

您可以非常轻松地在VCLinux中创建
makefile
项目。在您的解决方案中添加一个新项目,并选择<代码> VisualC++——跨平台-Linux -MaMaFixProject < /C>。然后将源代码和makefile复制到新创建的项目目录中,并将它们添加到VS项目中。在项目设置中,设置
remotebuild
命令,例如
cd$(RemoteProjectDir);进行调试
并在
调试
下设置要执行的远程命令


根据项目的复杂程度,可能需要创建一个非常简单的独立测试来尝试远程构建和调试,以验证您是否可以设置断点并正确地可视化字符串。

不是完美的解决方案,但我在即时窗口中使用msg_str.c_str()。对于UTF的7位ASCII子集之外的任何东西可能不太好。

我不知道您使用的类型是原生的,但是在这种情况下,您可能会考虑编写一个本地可视化工具。@ CCE1911 -是的,我知道您正在Linux框上构建,但是您的注释的含义是VS项目不是在驱动构建过程。我有一些问题要问你。您使用的是哪个版本的GCC、GDB、Linux和CMake?为什么选择不在VS中创建makefile或CMake Linux项目?您是在构建可执行文件还是库?@stanthomasgcc版本4.4.0、gdb和Ubuntu 7.11.1、cmake 3.10.1。我正在构建一个可执行文件,它将被python2.7脚本调用。这是一个包含所有环境变量的现有项目,包括Linux机器上定义的目录。据我所知,VS2017似乎无法打开现有的Linux make项目。你必须从头开始重新创建它。我尝试了这个,但是在配置include dirs时遇到了问题。可能是我的C++缺乏经验。我编辑了下面的答案:因为它是一个痛苦的打字,任何有用的评论。GCC 4.4.0几乎10岁。gdb支持标准容器的漂亮打印,但我不知道它的支持是否扩展到了很久以前,以及VS对这个gdb特性的支持程度如何。尝试(1)使用gdb在Linux上进行本机调试,(2)使用更新的gcc。
{"message":"mark","color":"#FFAABB","session_id":"XVg32B","x":34,"y":563}