【发布时间】:2011-02-25 09:56:05
【问题描述】:
我正在使用 gdb 调试我的应用程序。
我用过主要休息
所以当 main 被调用时它可能会中断。
知道我是否使用thread info 它表明线程数为1。
线程如何在 main 之前启动? 我的调用中没有任何线程调用,所以从哪里创建线程。我正在使用这些库
sqlite , curl , pcre , c-client
更新 我编写了一个示例程序来测试是否所有程序都以单线程开始
#include<iostream>
int main(int argc,char *argv[]){
std:: cout<<"Will I have any thread";
return 0;
}
但是当我用 gdb 调试它时
(gdb) break main
Breakpoint 1 at 0x400783: file threadtest.cpp, line 3.
(gdb) run
Starting program: /home/vivek/Desktop/a.out
Breakpoint 1, main (argc=1, argv=0x7fffffffe728) at threadtest.cpp:3
3 std:: cout<<"Will I have any thread";
(gdb) info threads
* 1 process 21608 main (argc=1, argv=0x7fffffffe728) at threadtest.cpp:3
(gdb)
它没有显示相同的信息。它显示 1 个进程而不是 1 个线程。
当我用 -lpthread 编译它时,它显示 1 个线程。
所以当我们使用 lpthread 时程序从一个线程开始? 还是 GDB 的行为是这样的?
【问题讨论】:
-
会不会,这个线程是你的主线程?
标签: c++ multithreading gdb