User Tools

Site Tools


help:developer_tools:cygwin
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


help:developer_tools:cygwin [2020/06/20 14:39] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +~~TOC~~
 +|<100% 25% - >|
 +^  \\ DATA ANALYTICS REFERENCE DOCUMENT\\ \\   ^^
 +^  Document Title:|Setting up Cygwin|
 +^  Document No.:|1570875139|
 +^  Author(s):|Gerhard van der Linde, Rita Raher|
 +^  Contributor(s): |
  
 +
 +
 +**REVISION HISTORY**
 +|< 100% 10% - - 10% 17% 10% >|
 +^  \\  Revision\\  \\  ^\\ Details of Modification(s)^\\ Reason for modification^  \\ Date  ^  \\ By  ^
 +|  [[:doku.php?id=help:developer_tools:cygwin&do=revisions|0]]  |Draft release|Document the setup of cygwin|  2019/10/12 10:12  |  Gerhard van der Linde  |
 +
 +
 +----
 +
 +====== Cygwin debugger in VS Code ======
 +
 +  * Download and run the Cygwin installer from here https://cygwin.com/install.html
 +  * Follow the [[help:developer_tools:cygwin_full_install|installation instructions]] from here https://preshing.com/20141108/how-to-install-the-latest-gcc-on-windows/
 +  * After installation building is required, **note** that this is done in a newly installed //Cygwin terminal//.
 +  * The module in the course uses gcc instead of g++. 
 +
 +===== Adding the gcc debugger gdb =====
 +
 +==== Install gdb ====
 +
 +Rerun the cygwin installer(setup-x86_64.exe), located in downloads or moved to cywin folder in c:\cygwin64
 +
 +Click through the installer and select gdb, you might have to use search to locate it.
 +
 +{{ :help:developer_tools:cygwin_add_gdb.jpg?nolink |}}
 +
 +<WRAP center round important 60%>
 +Click skip to select gdb and click net to complete the installation.
 +</WRAP>
 +
 +
 +The gdb.exe file will now appear in c:\cygwin64\bin folder. 
 +
 +No set up the debugger extension in VS Code if not already installed.
 +
 +{{ :help:developer_tools:gcc_vs_code_addon.jpg?nolink&600 |}}
 +
 +The debugger can now be configured in VS Code. 
 +
 +===== Step by step instructions to set up the debugger in VS Code =====
 +
 +
 +  - Open C file in VS Code
 +  - Set breakpoint in code
 +  - Press F5 or select Start debugging from Debug menu\\ {{:help:developer_tools:vsc_dbg:image1.png?nolink|}}
 +  - Select C++(GDB/LLDB) from popup\\ {{:help:developer_tools:vsc_dbg:image2.png?nolink|}}
 +  - Then select gcc.exe build and debug active file\\ {{:help:developer_tools:vsc_dbg:image2.png?nolink|}}
 +  - The Launch.json window should now pop up, see that this has the right path to your gdb.exe file, save and close.\\ {{:help:developer_tools:vsc_dbg:image4.png?nolink|}}
 +  - G back to the C file and F5 again, ow it should pop up a message about not being able to build the active file, click "Configure Task".\\ {{:help:developer_tools:vsc_dbg:image5.png?nolink|}}
 +  - Select C/C++:gcc.exe build active file
 +  - Now the task,json file should pop up and confirm that "command" points to the right location where the gcc.exe file is located. Save and close\\ {{:help:developer_tools:vsc_dbg:image6.png?nolink|}}
 +  - Go back to the C file again and press F5.
 +  - Now everything should start up and the code should stop at the debugger breakpoint.\\ {{:help:developer_tools:vsc_dbg:image7.png?nolink|}}
 +
 +
 +==== Sample configuration files for Cygwin gdb to work in VS Code ====
 +
 +<code js launch.json[enable_line_numbers="false",highlight_lines_extra="19"]>
 +{
 +  // Use IntelliSense to learn about possible attributes.
 +  // Hover to view descriptions of existing attributes.
 +  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 +  "version": "0.2.0",
 +  "configurations": [
 +    
 +    {
 +      "name": "gcc.exe build and debug active file",
 +      "type": "cppdbg",
 +      "request": "launch",
 +      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
 +      "args": [],
 +      "stopAtEntry": false,
 +      "cwd": "${workspaceFolder}",
 +      "environment": [],
 +      "externalConsole": false,
 +      "MIMode": "gdb",
 +      "miDebuggerPath": "C:\\cygwin64\\bin\\gdb.exe",
 +      "setupCommands": [
 +        {
 +          "description": "Enable pretty-printing for gdb",
 +          "text": "-enable-pretty-printing",
 +          "ignoreFailures": true
 +        }
 +      ],
 +      "preLaunchTask": "gcc.exe build active file"
 +    }
 +  ]
 +}
 +</code>
 +
 +<code js tasks.json[enable_line_numbers="false",highlight_lines_extra="9,17"]>
 +{
 +  // See https://go.microsoft.com/fwlink/?LinkId=733558 
 +  // for the documentation about the tasks.json format
 +  "version": "2.0.0",
 +  "tasks": [
 +    {
 +      "type": "shell",
 +      "label": "gcc.exe build active file",
 +      "command": "C:\\cygwin64\\bin\\gcc.exe",
 +      "args": [
 +        "-g",
 +        "${file}",
 +        "-o",
 +        "${fileDirname}\\${fileBasenameNoExtension}.exe"
 +      ],
 +      "options": {
 +        "cwd": "C:\\cygwin64\\bin"
 +      },
 +      "problemMatcher": [
 +        "$gcc"
 +      ],
 +      "group": "build"
 +    }
 +  ]
 +}
 +</code>
 +
 +<WRAP center round tip 60%>
 +Right click and save the two json configuration files above into a subfolder named ''.vscode''
 +This folder should be in the same folder where your c files that you want to debug resides.
 +</WRAP>
 +
 +===== Troubleshooting =====
 +
 +  * https://github.com/microsoft/vscode-cpptools/issues/2778
 +
 +<code js>
 +"logging": { "engineLogging": true }
 +</code>
 +
 +
 +  * http://cs.baylor.edu/~donahoo/tools/gdb/tutorial.html
 +
 +
 +==== UTF-8 Workaround ====
 +
 + * https://github.com/microsoft/vscode-cpptools/issues/1527
 +
 +So the issue is caused in gb and the extra escaped character returned on line three in the VS Code debugger window as shown below.
 +
 +<code bash>
 +1: (2308) ->(gdb)
 +1: (2317) <-1001-gdb-set target-async on
 +1: (2318) ->&"\357\273\2771001-gdb-set target-async on\n"
 +1: (2319) ->&"Undefined command: \"\" Try \"help\".\n"
 +1: (2320) ->^error,msg="Undefined command: \"\" Try \"help\"."
 +1: (2320) ->(gdb)
 +</code>
 +
 +
 +As a workaround to fix this add a "gdb-with-chcp.cmd" within to your project (eg, "c:\cywin64\bin\gdp-with-chcp.cmd"):
 +
 +<code bash>
 +@:: gdb-with-chcp.cmd
 +@chcp 1257 >NUL 2>&1 && @"gdb.exe" %*
 +</code>
 +
 +This sets the codepage for GDB and fixes the problem cause above when running the PC set to UTF-8 codepage.
 +
 +Amend the current json code launching the debugger to point to the cmd file just created.
 +
 +<code js launch.josn>
 +  // use "PATHTO/gdb-with-chcp.cmd" as "miDebuggerPath" within "launch.json"
 +  // eg
 +  // ...
 +  "miDebuggerPath": "${workspaceFolder}/dbin/gdb-with-chcp.cmd",
 +  // ...
 +
 +</code>
 +
 +This resolved my gcc debugger issues. 
help/developer_tools/cygwin.txt · Last modified: 2020/06/20 14:39 by 127.0.0.1