sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1653回复:5

linux怎么进行线程的源码级调试(内空50)

楼主#
更多 发布于:2002-08-06 10:14
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void * do_loop(void * data)
{
printf(\" do_loop \\n\");
pthread_exit(NULL);
}

int main()
{
int ret;
pthread_t p_thread;
int a = 1;
int b = 2;

ret = pthread_create(&p_thread,NULL,do_loop,(void *)&a);
do_loop((void *)&b);

printf(\" can\'t be here \\n\");

return 0;
}pthread_create
比如这段代码,偶到了ret = pthread_create(&p_thread,NULL,do_loop,(void *)&a);这一句时,用s吧,到了一个不知名的地方,n吧,直接就过去了
    偶的问题是,如何进入偶的线程,看这里执行到了哪一句
111
longge
驱动中牛
驱动中牛
  • 注册日期2002-07-10
  • 最后登录2005-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-06 15:24
用break啊,设断点啊!
除了记忆什么都带不走; 除了足迹什么都留不下。
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-06 16:57
FT,这还用你教?
b main之类的东东偶都不会用,不如你给我发条绳子吧
111
longge
驱动中牛
驱动中牛
  • 注册日期2002-07-10
  • 最后登录2005-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-06 18:16
你是想一步一步看你线程中的代码的执行?
除了记忆什么都带不走; 除了足迹什么都留不下。
letree
驱动牛犊
驱动牛犊
  • 注册日期2002-08-04
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-06 19:24
在gdb下,用info thread看看系统默认在那个线程上,(默认的线程左边有“*”号),
用pthread XX来改变默认的线程,XX为gdb赋予的一个数字,在info thread显示信息的最左边。

象你的情况,只要在do_loop函数处设一个断点,等pthread库初始化完线程,就会返回到该函数处继续执行了
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-07 09:57
看来偶应该找条绳子了。
真的很简单。
111
游客

返回顶部