VS2017 - 如何配置远程调试项目

时间:2018-01-24 00:08:30

标签: c++ linux visual-studio-2017 raspberry-pi3

我想在我的Raspberry Pi(OS:Raspbian)上创建一个MP3播放器。问题是,我没有任何Linux编程经验,而且由于跨平台编译,我在项目配置方面遇到了很大的问题。我想添加两个图书馆:

我能够使用gcc -O2 test.cpp -lmpg123在linux机器上编译代码,但是我无法强制Visual Studio查看这些库。

我在尝试远程调试程序时也遇到使用wiringPi lib的问题,因为我必须以root用户身份运行GPIO配置。是否有任何方法可以强制Visual Studio以root权限运行我的编译代码?

1 个答案:

答案 0 :(得分:0)

就我个人而言,我来自C / C ++ / MFC / Windows编程的悠久历史,根本没有Linux经验。我大约一年前开始为Raspberry编程,当时我从儿子那里得到一个生日礼物。有了C / C ++历史,它真的不是那么难,但你只需要阅读一下,因为在Linux上有很多是相同的,而且很多都不是:)。只需阅读和阅读,及时,您是一位经验丰富的Linux程序员!我害怕需要一些时间。

所以,我认为我是一个经验丰富的新手:)我在www.die.net(和其他Linux手册页)上找到了很多信息。如果你在那里搜索一个函数,比如printf(),看看(3)页面 - 它们解释了你应该如何使用'm。

但是虽然VS2017在这方面做得非常好,但并不总是如你所愿那样顺利。有时只需要重新启动Raspberry,重新启动VS并再试一次。 Linux交叉编译在VS中是一个非常新的,并不完美。

一些提示:

  • 使用带有新鲜拉伸图像的Raspberry开始。当然在经过 sudo apt-get update&& sudo apt-get -y upgrade
  • 将Visual Studio中的调试器设置为gdb而不是gdbserver。这样可以防止某些调试问题。
  • 将所有源文件(.h和.cpp)放在项目的主文件夹中,并放在main.cpp旁边。如果将它们放在不同的目录中然后包含在项目中,则可以调试程序但是无法单步执行。
  • 在开发过程中经常开始简单并调试程序。在下次检查之前不要添加太多代码。在交叉编译设置中,除了正常情况之外,还有很多东西可以(并且会)出错。
  • VS2017在 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ VC \ Linux \ include 中包含默认的Linux包含文件。如果您需要其他人,请将它们放在您自己的文件夹中并包含路径。

使用交叉编译VS本身不进行任何编译,您可以使用它来维护您的项目。当必须编译项目时,所有必需的文件都被复制到Raspberry,VS会调用编译器和链接器。

关于如何为远程调试配置项目的问题:最好从Visual Studio 2017中的Blink示例开始(文件,新建,项目,已安装,Visual C ++,跨平台,Linux => Blink)。它应该没有问题。从那里,您可以进一步构建您的项目。

在Blink示例中,他们使用wiringPiSetupSys()和远程命令 gpio export 17 out 来运行没有sudo的程序。我发现将其更改为wiringPiSetup()并禁用远程命令,仍然可以运行和调试程序。在Raspberry上,我可以通过发出 ./ [programname] 从它的文件夹运行该程序。如果这对您不起作用,您可以通过发出 sudo ./ [programname] 来运行该程序。