首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程Linux视图字符串上的VS2017调试

远程Linux视图字符串上的VS2017调试
EN

Stack Overflow用户
提问于 2018-06-12 11:25:08
回答 2查看 764关注 0票数 0

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

代码语言:javascript
复制
std::string msg_str(static_cast<char*>(incoming.data()), incoming.size());

上面的字符串是通过ZeroMQ消息检索的。如果我在msg_str上做了一个msg_str,那么所有的值都不是人类可读的形式。

我希望看到的是:

代码语言:javascript
复制
{"message":"mark","color":"#FFAABB","session_id":"XVg32B","x":34,"y":563}

要在VS2017调试器中查看这一点,我需要做什么?

编辑

不,我不是用VS编译的。我正在开发一个使用Urho3D引擎的游戏。在Linux盒上,我使用cmake创建makefile,然后使用来自shell的make编译/链接。在VS中,我得到了各种各样的构建错误。

我一直在寻找更多关于如何设置这个项目的信息,但没有结果。我最大的问题是,我是一个C#开发人员,试图跟上C++的步伐。学习曲线很陡峭..。

EN

回答 2

Stack Overflow用户

发布于 2018-06-12 23:23:46

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

它看起来至少有一些字符串在QuickWatch中作为_M_p可见。你期望的结果似乎不是一个简单的字符串,这会有意义吗?

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

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2018-12-19 21:00:53

不是完美的解决方案,但我在即时窗口中执行msg_str.c_str()。除了utf的7位ascii子集之外,任何东西可能都不能很好地工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50815993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档