public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* Quotes after --args
       [not found] <1339164112.4081.ezmlm@sourceware.org>
@ 2012-06-08 14:21 ` "Markus Bühren"
  2012-06-08 14:50   ` Eli Zaretskii
  0 siblings, 1 reply; 2+ messages in thread
From: "Markus Bühren" @ 2012-06-08 14:21 UTC (permalink / raw)
  To: gdb

Hi,

I am using the GNU gdb 6.8 under Windows. I am trying to run a program that is invoked like 

  test.exe -f "my testfile.txt"

in batch mode. This is my command line:

  gdb --eval-command=run --batch --args test.exe -f "my testfile.txt"

My program should get two arguments, '-f' and 'my testfile.txt'. However, replacing my actual program test.exe by a program that just prints the input arguments, I get the following result:

  C:\>gdb --eval-command=run --batch --args test.exe -f "my testfile.txt"
  [New thread 6180.0xad0]
  argv[0] = >>C:/test.exe<<
  argv[1] = >>-f<<
  argv[2] = >>my\<<
  argv[3] = >>testfile.txt<<
  
  Program exited normally.

Can you help me to avoid that the file name is splitted into two arguments, with replacing the blank ' ' after 'my' by a backslash '\'? I have tried a lot of combinations of double double quotes '""', escaped double quotes '\"' and so on but I did not manage to get the file name passed as a single argument into my program.

Yours
Markus

PS: Renaming the file is not an option - actually, I already simplified matters here to a file name with a blank in it.

PPS: For your reference, this is the C code of my simple program returning the arguments:

#include <stdio.h>

void main(int argc, char *argv[])
{
  int k;
  for(k = 0; k < argc; k++)
  {
    printf("argv[%d] = >>%s<<\n", k, argv[k]);
  }
}

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Quotes after --args
  2012-06-08 14:21 ` Quotes after --args "Markus Bühren"
@ 2012-06-08 14:50   ` Eli Zaretskii
  0 siblings, 0 replies; 2+ messages in thread
From: Eli Zaretskii @ 2012-06-08 14:50 UTC (permalink / raw)
  To: Markus Bühren; +Cc: gdb

> Date: Fri, 08 Jun 2012 16:21:02 +0200
> From: "Markus Bühren" <bhr2@gmx.de>
> 
>   gdb --eval-command=run --batch --args test.exe -f "my testfile.txt"
> 
> My program should get two arguments, '-f' and 'my testfile.txt'. However, replacing my actual program test.exe by a program that just prints the input arguments, I get the following result:
> 
>   C:\>gdb --eval-command=run --batch --args test.exe -f "my testfile.txt"
>   [New thread 6180.0xad0]
>   argv[0] = >>C:/test.exe<<
>   argv[1] = >>-f<<
>   argv[2] = >>my\<<
>   argv[3] = >>testfile.txt<<
>   
>   Program exited normally.
> 
> Can you help me to avoid that the file name is splitted into two arguments, with replacing the blank ' ' after 'my' by a backslash '\'? I have tried a lot of combinations of double double quotes '""', escaped double quotes '\"' and so on but I did not manage to get the file name passed as a single argument into my program.

It's a bug.  GDB handles the whitespace in a way that works on Posix
platforms, but not on Windows.

> PS: Renaming the file is not an option - actually, I already simplified matters here to a file name with a blank in it.

You can always use its 8+3 alias, something like mytest~1.txt (use the
"dir /x" command from the shell prompt to see the actual name),
instead of the long name.  This is a workaround, though.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-06-08 14:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1339164112.4081.ezmlm@sourceware.org>
2012-06-08 14:21 ` Quotes after --args "Markus Bühren"
2012-06-08 14:50   ` Eli Zaretskii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).