用C ++调试Linux开发的Makefile项目

时间:2018-01-26 01:13:32

标签: linux visual-studio-2015 makefile remote-debugging

我可以使用C ++调试Linux Development的Console Application项目,但是不能调试Makefile项目。断点没有被击中。

我的系统如下所示

  • Window 10 home
  • Visual Studio社区2015更新3
  • 用于Linux Development 1.0.7的Visual C ++
  • VirtualBox 5.1.30 r118389(Qt5.6.2) - CentOS 7 1708

新项目 - > Visual C ++ - >跨平台 - > Linux - >控制台应用程序(Linux) 我可以创建项目并且运行良好。

但是,我无法调试makefile项目。

我尝试如下

  1. 创建项目
    新项目 - > Visual C ++ - >跨平台 - > Linux - > Makefile项目(Linux) 名称:Project1
    位置:D:\ WorkSpace \ TEST_LINUX \
    解决方案名称:Project1

  2. 添加来源
    单击右键“我的项目(Project1(Linux))” - >添加 - >新物品...... - > C ++文件(.cpp)
    名称:main.cpp
    D:\ WorkSpace \ TEST_LINUX \ Project1 \ Project1

  3. 创建空的Makefile
    d:\ WorkSpace \ TEST_LINUX \ Project1 \ Project1 \ Makefile

  4. 添加Makefile
    单击右键“我的项目(Project1(Linux))” - >添加 - >现有项目......
    文件名:Makefile

  5. 编辑main.cpp和Makefile

    main.cpp

    #include <stdio.h>
    
    int main()
    {
        printf("Hello world 1\n");
        printf("Hello world 2\n");
        printf("Hello world 3\n");
        printf("Hello world 4\n");
        printf("Hello world 5\n");
    
        return 0;
    }
    

    Makefile

    all:
        gcc -o Project1 main.cpp
    
    clean:
        rm -rf Project1
    
  6. 配置属性 单击右键“我的项目(Project1(Linux))” - >属性
    编辑配置属性 - &gt;一般 - &gt;远程构建根目录
        ~/projects - &gt; /home/mike/projects

    编辑配置属性 - &gt;远程构建 - &gt;构建命令行
         - &gt; cd $(RemoteRootDir)/$(ProjectName); make all
    编辑配置属性 - &gt;远程构建 - &gt;重建所有命令行
         - &gt; cd $(RemoteRootDir)/$(ProjectName); make clean all
    编辑配置属性 - &gt;远程构建 - &gt;清洁命令行
         - &gt; cd $(RemoteRootDir)/$(ProjectName); make clean
    编辑配置属性 - &gt;远程构建 - &gt;输出
         - &gt; $(RemoteRootDir)/$(ProjectName)/Project1

  7. 断点
    将光标放在一行(“printf(”Hello world 2 \ n“);”和“printf(”Hello world 5 \ n“);”)并按F9

  8. 调试
    单击“远程GDB调试器”

  9. 输出窗口
    看到最后一行,这个程序运行良好,但调试不起作用。

    输出 - &gt;显示输出:Debug

    =thread-group-added,id="i1"
    GNU gdb (GDB) 7.9
    Copyright (C) 2015 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "--host=i686-pc-mingw32 --target=x86_64-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.
    For help, type "help".
    Type "apropos word" to search for commands related to "word".
    Loaded 'shared libraries loaded at this time.'. Cannot find or open the symbol file.
    Stopped due to shared library event:
      Inferior loaded /lib64/libc.so.6
        /lib64/ld-linux-x86-64.so.2
    Loaded '/lib64/libc.so.6'. Cannot find or open the symbol file.
    Loaded '/lib64/ld-linux-x86-64.so.2'. Cannot find or open the symbol file.
    [Inferior 1 (process 8809) exited normally]
    The program '' has exited with code 0 (0x0).
    
  10. 修改main.cpp

    #include <stdio.h>
    
    int main()
    {
        printf("Hello world 1\n");
        getchar();
        printf("Hello world 2\n");
        getchar();
        printf("Hello world 3\n");
        getchar();
        printf("Hello world 4\n");
        getchar();
        printf("Hello world 5\n");
    
        return 0;
    }
    
  11. 重试调试
    单击“远程GDB调试器”

    出现Linux控制台窗口。

    Process /home/mike/projects/Project1/Project1 created; pid = 9353
    Listening on port 4444
    Remote debugging from host 127.0.0.1
    Hello world 1
    

    在Linux控制台窗口中按[Enter]

    Process /home/mike/projects/Project1/Project1 created; pid = 10152
    Listening on port 4444
    Remote debugging from host 127.0.0.1
    Hello world 1
    
    
    
    Hello world 2
    Hello world 3
    

    在Linux控制台窗口中按[Enter]

    Process /home/mike/projects/Project1/Project1 created; pid = 10152
    Listening on port 4444
    Remote debugging from host 127.0.0.1
    Hello world 1
    
    
    
    Hello world 2
    Hello world 3
    
    
    
    Hello world 4
    Hello world 5
    
    Child exited with status 0
    GDBserver exiting
    
  12. 奇怪的事情

    1. 虽然我按[Enter]两次,但调试完毕 在putty中运行程序并按[Enter]四次,程序完成。

    2. 断点是一个白点 在单击“远程GDB调试器”之前,断点显示为红点 但是在单击[“Remote GDB Debugger”]后,断点显示为WHITE点 白点的工具提示是“断点当前不会被命中。包含此断点的模块尚未加载或无法获得断点地址。”

    3. 每次,这个项目都已过时 每当我单击“Remote GDB Debugger”时,都会出现对话框。

      Microsoft Visual Studio
      This project is out of date
      Would you like to build it?
      

      我NERVER修改我的来源。它没有过时。

    4. 为了在Makefile Project(Linux)和Consol Application(Linux)中调试,我该怎么办?

      感谢您提前感谢。

      我邮寄到vccplinux-support@microsoft.com,但邮寄回550 5.4.1 [vccplinux-support@microsoft.com]: Recipient address rejected: Access denied [BL2NAM06FT015.Eop-nam06.prod.protection.outlook.com]

0 个答案:

没有答案