zoukankan      html  css  js  c++  java
  • vscode插件之C/C++


    1、给C/C++调试器配置launch.json

    • launch.json用于在VS Code中配置调试器;带着关于生成器几乎所有需要的信息。

    • 需要将用于计划调试的可执行文件的路径填充在program字段;必须在launch和attach配置信息中填充。

    • 生成的文件包含两个部分,一个为launch配置调试,一个为attach配置调试。

    2、配置VS Code的调试行为

    • 调试期间可以通过设置和改变下列选项来控制VS Code的行为:
    1. program:指定执行debugger的完整路径。

    2. symbolSearchPath:告诉windows调试器搜索.pdb文件的路径。如果有多个路径,则用分号分开,例如:C:\Symbols;C:\SymbolDir2

    3. additionalSOLibSearchPath:告知GDB或者LLD去搜索.so文件的路径。如果有多个路径,用;隔开。

      • GDB:UNIX及UNIX-like下的调试工具。

      • LLDB:LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件。LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件。

    4. externalConsole

      • windows:如果设置为True,它将生成外部控制台;如果设置为false,则将会使用VS Code的集成终端;

      • Linux:如果设置为True,它将通知VS Code去生成一个外部控制台;如果设置为false,则将会使用VS Code的集成终端;

    5. avoidWindowsConsoleRedirection:为了在Windows上支持VSCode与gdb的集成终端,扩展将控制台重定向命令添加到debuggee的参数中,以便在集成终端中显示控制台输入和输出。将此选项设置为true将禁用它。

    6. logging:可选标志,以确定应该将哪些类型的消息记录到调试控制台。

      • exceptions:默认为true,确定是否应该将异常消息记录到调试控制台。

      • moduleLoad:默认为true,确定是否应该将模块加载事件记录到调试控制台。

      • programOutput:默认为true,确定是否应该将程序输出记录到调试控制台。

      • engineLogging:默认为false,确定是否应该将诊断引擎日志记录到调试控制台。

      • trace:默认为false,确定是否应该将诊断适配器命令跟踪记录到调试控制台。

      • traceResponse:默认为false,确定是否应该将诊断适配器命令和响应跟踪记录到调试控制台。

    7. visualizerFile:调试时.natvls文件将被使用。

    8. showDisplayString:当指定visualizerFile时,showDisplayString将启用显示字符串,打开此选项会导致调试期间性能下降。

    举例:

    
    
    {
       "name": "C++ Launch (Windows)",
       "type": "cppvsdbg",
       "request": "launch",
       "program": "C:\app1\Debug\app1.exe",
       "symbolSearchPath": "C:\Symbols;C:\SymbolDir2",
       "externalConsole": true,
       "logging": {
           "moduleLoad": false,
           "trace": true
        },
       "visualizerFile": "${workspaceRoot}/my.natvis",
       "showDisplayString": true
    }
    

    3、配置目标应用

    下列选项可让你在目标应用程式启动时修改其状态:

    1. args:启动程序时传递给程序的命令行参数的JSON数组。例如 ["arg1", "arg2"],如果要转义字符,则需要对其进行两次转义。例如["{"arg": true}]将向您的应用程序发送{"arg1": true}。

    2. cwd:设置调试器启动的应用程序的工作目录。

    3. enviroment:要添加到程序环境中的环境变量。

    举例:

    
    {
       "name": "C++ Launch",
       "type": "cppdbg",
       "request": "launch",
       "program": "${workspaceRoot}/a.out",
       "args": ["arg1", "arg2"],
       "environment": [{"name": "squid", "value": "clam"}],
       "cwd": "${workspaceRoot}"
    }
    

    4、自定义GDB或者LLDB

    下列选项可让你改变GDB或者LLDB的行为:

    1. MIMode:指示VS代码将连接到的调试器。必须设置为gdb或lldb。这是根据每个操作系统预先配置的,可以根据需要进行更改。

    2. miDebuggerPath:调试器(如gdb)的路径。当只指定可执行文件时,它将为调试器搜索操作系统的路径变量(Linux和Windows上的GDB, OS X上的LLDB)。

    3. miDebuggerArgs:传递给调试器的其他参数(如gdb)。

    4. stopAtEntry:如果设置为true,调试器应该在目标的入口点停止(在附加时忽略)。默认值为false。

    5. setupCommands:要执行的命令的JSON数组,以便设置GDB或LLDB。例如:"setupCommands": [{"text": "target-run", "description": "run target", " ignorefailure ": false}]

    6. customLaunchSetupCommands:如果提供了,这将用一些其他命令替换用于启动目标的默认命令。例如,这可以是“-target-attach”以便附加到目标进程。空命令列表将用空命令替换启动命令,如果将启动选项作为命令行选项提供给调试器,这将非常有用。例如:“customLaunchSetupCommands”:[{“text”:“target-run”,“description”:“run target”,“ignorefailure”:false}]。

    7. launchCompleteCommand:调试器完全设置好后要执行的命令,以便使目标进程运行。允许的值是“执行器运行”、“执行器继续”、“None”。默认值是“execl -run”。

    举例:

    
    {
       "name": "C++ Launch",
       "type": "cppdbg",
       "request": "launch",
       "program": "${workspaceRoot}/a.out",
       "stopAtEntry": false,
       "customLaunchSetupCommands": [
          { "text": "target-run", "description": "run target", "ignoreFailures": false }
       ],
       "launchCompleteCommand": "exec-run",
       "linux": {
          "MIMode": "gdb",
          "miDebuggerPath": "/usr/bin/gdb"
       },
       "osx": {
          "MIMode": "lldb"
       },
       "windows": {
          "MIMode": "gdb",
          "miDebuggerPath": "C:\MinGw\bin\gdb.exe"
       }
    }
    

    5、调试dump(转储)文件

    C/ c++扩展允许调试Windows上的dump文件以及Linux和OS X上的core dump文件

    1. dumpPath:如果要调试Windows转储文件,请将此设置为转储文件的路径,以便在启动配置中启动调试。

    2. coreDumPath:要调试指定程序的核心转储文件的完整路径。将其设置为核心转储文件的路径,以便在启动配置中启动调试。注意:MinGw不支持核心转储调试。

    6、远程调试或者本地服务器上调试

    1. miDebuggerServerAddress:调试器服务器(例如gdbserver)的网络地址,以便连接到远程调试(例如:localhost:1234)。

    2. debugServerPath:调试服务器启动的完整路径。

    3. debugServerArgs:调试服务器的参数。

    4. serverStarted:要在调试服务器输出中查找的服务器启动模式。

    5. serverLaunchTimeout:调试器等待debugServer启动的时间(以毫秒为单位)。默认是10000。

    7、其他属性

    1. processId:默认为${command.pickProcess}。将显示调试器可以附加到的可用进程列表。建议保留此默认值,但是可以显式地将该属性设置为调试器要附加到的特定进程ID。

    2. request:指示配置节是打算启动程序还是附加到已运行的实例。

    3. targetArchitecture:由于自动检测到目标体系结构,因此不再需要此选项。

    4. type:指示正在使用的底层调试器。使用Visual Studio Windows调试器时必须是cppvsdbg,使用GDB或LLDB时必须是cppdbg。这将在启动时自动设置为正确的值。创建json文件。

    5. sourceFileMap:这允许将源的编译时路径映射到本地源位置。它是键/值对的对象,将解析第一个字符串匹配的路径。(例如:"sourceFileMap": {"/mnt/c": "c:"}将映射调试器返回的以/mnt/c开头的任何路径,并将其转换为c:。对象中可以有多个映射,但它们将按提供的顺序处理。)

    参考:

    1.官网:https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md

    2.csdn博客:https://blog.csdn.net/wzxlovesy/article/details/76708151

    https://blog.csdn.net/g19zwk/article/details/78414226

  • 相关阅读:
    git如何将一个远程仓库的某个分支拉取到当前分支?
    linux下如何检查内核补丁是否符合社区代码规范?
    javascript快速入门20--Cookie
    javascript快速入门19--定位
    javascript快速入门18--样式
    javascript快速入门17--事件
    javascript快速入门16--表格
    javascript快速入门15--表单
    javascript快速入门15--节点
    javascript快速入门14--DOM基础
  • 原文地址:https://www.cnblogs.com/hugechuanqi/p/10503072.html
Copyright © 2011-2022 走看看