我真的很喜欢在Borland C ++中使用一些简单的界面,因此我在笔记本电脑上安装了带gcc / gdb / vim等的cygwin(不幸的是,我无法在这里安装Linux :()
我遇到的问题是:当我尝试调试非并行程序时,f.e:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
int i = argc;
fprintf(stdout, "Hello World %d\n", i);
return 0;
}
我的gdb挂起:
$ gdb a.exe
GNU gdb (GDB) 7.3.50.20111026-cvs (cygwin-special)
...
Reading symbols from /cygdrive/c/programming/temp/a.exe...done.
(gdb) b main
Breakpoint 1 at 0x401179: file helloworld.cpp, line 4.
(gdb) r
Starting program: /cygdrive/c/programming/temp/a.exe
**[New Thread 12132.0x11a4]
[New Thread 12132.0x32ac]**
Breakpoint 1, main (argc=1, argv=0x28ac60) at helloworld.cpp:4
4 int main(int argc, char **argv) {
(gdb) n
5 int i = argc;
(gdb)
6 fprintf(stdout, "Hello World %d\n", i);
(gdb) p i
$1 = 1
(gdb) n
.......... nothing here
我无法通过C-C,C-Z或查杀终止此调试。 我认为gdb会挂起,因为它试图使用2个线程并且出现问题。这是信息主题:
(gdb) info threads
Id Target Id Frame
2 Thread 10160.0x31e8 0x775cf8e5 in ntdll!RtlUpdateClonedSRWLock () from /cygdrive/c/Windows/system32/ntdll.dll
* 1 Thread 10160.0x15a8 main (argc=1, argv=0x28ac60) at helloworld.cpp:4
对我来说,这很奇怪,1线程程序在2个线程上执行。我在Linux上检查了gdb,gdb使用了1个线程。
我的问题是:我可以说gdb无论如何只使用1个帖子吗?
顺便说一句,在我更新笔记本电脑和cygwin之前,我没有遇到同样的问题。我试图回滚gdb(7.3.50实际上是cygwin建议的最老的一个),但它没有帮助。谢谢