如何关闭多线程gdb执行

时间:2012-09-28 07:53:56

标签: c++ multithreading gdb cygwin

我真的很喜欢在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建议的最老的一个),但它没有帮助。

谢谢

0 个答案:

没有答案