Skip to content

Escaping of Backslashes in the args of a debug-configuration: Use single quotes for passing arguments to gdb #14505

@tilman22

Description

@tilman22

Environment

  • OS and Version: Windows
  • VS Code Version: 1.122.0
  • C/C++ Extension Version: 1.32.2
  • If using SSH remote, specify OS of remote machine: Rocky 10

When debugging an cpp application under linux/gdb, then arguments are passed to the gdb without single quotes. For example

            "args": [
                "\\\\srv\\path1\\path2\\file.txt"

--> in gdb, this arguments arrives as:

-exec p argv[1]
$1 = 0x7fffffffd937 "\\srvpath1path2file.txt"

Putting the argument in additional single quotes is a workaroung when debugging with gdb (but not when debugging on Windows)

            "args": [
                "'\\\\srv\\path1\\path2\\file.txt'"

==> The cpptools-Extension should quote parameters with a single quote (')

Bug Summary and Steps to Reproduce

Bug Summary:

Steps to reproduce:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior:

Configuration and Logs

=thread-group-added,id="i1"
GNU gdb (Rocky Linux) 16.3-2.el9
Copyright (C) 2024 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 "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://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".
enumclass_printer from enumclass_pretty_printer.py registered successfully.
chrono_printers from chrono_pretty_printer.py registered successfully.
=cmd-param-changed,param="debuginfod enabled",value="on"
Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
=cmd-param-changed,param="pagination",value="off"
Stopped due to shared library event (no libraries added or removed)
Loaded '/lib64/ld-linux-x86-64.so.2'. Symbols loaded.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Breakpoint 2, main (argc=5, argv=0x7fffffffd4d8) at /home/soti/dev/itpprog_main/iwan/src/iwants.c:75
75	   char **envp =  __environ; // { 0 };
Loaded '/lib64/libstdc++.so.6'. Symbols loaded.
Loaded '/lib64/libm.so.6'. Symbols loaded.
Loaded '/lib64/libgcc_s.so.1'. Symbols loaded.
Loaded '/lib64/libc.so.6'. Symbols loaded.
Execute debugger commands using "-exec <command>", for example "-exec info registers" will list registers in use (when GDB is the debugger)
-exec p argv[1]
$1 = 0x7fffffffd937 "\\srvpath1path2file.txt"

Other Extensions

No response

Additional context

No response

Metadata

Metadata

Assignees

Labels

bugdebuggerhelp wantedCan be fixed in the public (open source) repo.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions