gpt4 book ai didi

linux - VS2017远程Linux调试——查看字符串

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:39 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2017 在远程 Linux 计算机上开发 C++ 应用程序。首先,我在远程机器上运行我的代码,然后使用 SSH 连接到远程进程。我附加到 native (GDB) 代码并命中我的断点。问题是我无法查看调试器中接收到的字符串的内容。

std::string msg_str(static_cast<char*>(incoming.data()), incoming.size());

上面的字符串是通过 ZeroMQ 消息检索的。如果我对 msg_str 执行 QuickWatch,则没有任何值是人类可读的形式。 enter image description here我希望看到的是:

{"message":"mark","color":"#FFAABB","session_id":"XVg32B","x":34,"y":563}

我需要做什么才能在 VS2017 调试器中查看它?

编辑

不,我没有使用 VS 进行编译。我正在使用 Urho3D 引擎开发游戏。在 Linux 机器上,我使用 cmake 创建 makefile,然后使用 SSH bash shell 中的 make 进行编译/链接。在 VS 中,我遇到了各种构建错误。

我一直在上下搜索有关如何设置此项目的更多信息,但无济于事。我最大的问题是我是一名 C# 开发人员,试图跟上 C++ 的发展速度。学习曲线非常陡峭...

最佳答案

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

看起来至少有一些字符串在 QuickWatch 中显示为 _M_p。你期望的结果似乎不是一个简单的字符串,这有关系吗?

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

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

您可以很容易地在 VCLinux 中创建一个 makefile 项目。将新项目添加到您的解决方案并选择 Visual C++ - Cross Platform - Linux - Makefile Project。然后将源代码和 makefile 复制到新创建的项目目录中,并将它们添加到 VS 项目中。在项目设置中,设置 Remote Build 命令,例如cd $(RemoteProjectDir);make debug 并在 Debugging 下设置您要执行的远程命令。

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

关于linux - VS2017远程Linux调试——查看字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50815993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com