From: <nyo...@gm...> - 2007-08-03 14:48:22
|
Hello all, I'm getting a really weird problem with I/O under MSYS. I've got a C++ program compiled with -mwindows, which among other things, asks for a password. After much mucking, I got a snippet of code that did what I wanted from the cURL project, but the getch() function doesn't quite work: it just keeps gobbling characters from God knows where, instead of asking me. I thought that it might be the doing of MSYS' shell, so I tried running my program under the ol' MS-DOS shell, but then there's no output at all! I tried fflush()ing stdin and stdout before doing getch, but it doesn't do anything. What might I be doing wrong? Oh, and by the way, if I use -ggdb when compiling and then try running the program, it barfs on me. The command I use for linking is: g++ -o scenario-client src/FileDownloader.o src/client.o src/ConsoleSecretsAgent.o src/SecretsAgent.o lib/getpass.o -lssl -lcrypto -L/mingw/lib -lneon -lssl -lcrypto -lws2_32 -lws2_32 -lz -L/mingw/lib -lxml2 -lz -liconv -lws2_32 -mwindows For compiling, I use stuff like: g++ -Wall -I/mingw/include/neon -Isrc -Ilib -ggdb -DNDEBUG -c -o src/SecretsAgent.o src/SecretsAgent.cpp And then GDB says this: $ gdb ./scenario-client.exe GNU gdb 5.2.1 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i686-pc-mingw32"... An internal GDB error was detected. This may make further debugging unreliable. Quit this debugging session? (y or n) n Create a core file containing the current state of GDB? (y or n) n (gdb) c:/cygmnt/prj/pkg/src/gdb/mingw32/gdb/dwarf2read.c:985: gdb-internal-error: read_comp_unit_head: dwarf from non elf file I'm a bit weirded out by all this. Might it be the fault of one of the libraries? I compiled them all myself under mingw, so I don't think it's a problem of binary compatibility. Thanks, Antonio |
From: Greg C. <chi...@co...> - 2007-08-03 15:03:08
|
On 2007-08-03 14:48Z, Antonio García wrote: > > I'm getting a really weird problem with I/O under MSYS. I've got a C++ > program compiled with -mwindows, which among other things, asks for a ^^^^^^^^^ > password. > > After much mucking, I got a snippet of code that did what I wanted from > the cURL project, but the getch() function doesn't quite work ^^^^^^^ Are you trying to do console I/O in a GUI app? |
From: <nyo...@gm...> - 2007-08-03 15:11:21
|
Hello Greg, Why, thank you for the speedy response. I'm so silly! I forgot -mwindows was for GUI apps. I was just now testing the effect of the different flags with a dummy hello world program. Indeed, it's as you say. Oh and -ggdb doesn't work, but -g does: I assume I just picked the wrong binary format (probably the Mingw32 GDB uses DWARF or something of the sort). Whew, I was worried. Sorry for bothering you guys. Thanks a lot, Antonio |
From: Greg C. <chi...@co...> - 2007-08-03 15:35:07
|
On 2007-08-03 15:11Z, Antonio García wrote: > > Oh and -ggdb doesn't work, > but -g does: I assume I just picked the wrong binary format (probably > the Mingw32 GDB uses DWARF or something of the sort). This depends on the specific version of gcc. My notes say: # MinGW gcc-3.4.2 writes dwarf2 debug records if '-ggdb' is specified, # but the version of gdb packaged with it expects stabs format. and, IIRC, stabs was the default for MinGW gcc versions before and after gcc-3.4.2 (unless you downloaded a special dwarf2 version, or built one yourself). You had said you're using "GNU gdb 5.2.1". That's pretty old. There have been discussions of different 6.x versions here in the past week or two, and I'd guess that this one http://downloads.sourceforge.net/mingw/gdb-6.6.tar.bz2 might be the most robust. |