当前位置:  技术问答>linux和unix

dbx如何进入fork之后的子线程里呢?

    来源: 互联网  发布时间:2016-12-07

    本文导语:  代码如下: main() {            switch(*pid = fork()) {     case -1: /* Error forking */     .....     case 0: /* In child process */             ....         /*我想debug这段代码*/             default: /...

代码如下:

main()
{
           switch(*pid = fork()) {
    case -1: /* Error forking */
    .....
    case 0: /* In child process */
            ....         /*我想debug这段代码*/
            default: /* parent */
break;
            }
            return 1;

}


我用dbx debug这段代码里,一会就退出了,怎么debug到其产生的子进程中啊?

我本来在子进程代码行加了下断点: stop at "main.c":102,但根本停不下来


|
5.12    Debugging Multiple Asynchronous Processes

The dbx debugger can debug multiple simultaneous asynchronous processes. While debugging asynchronous processes, dbx can display status and accept commands asynchronously. When running asynchronously, the debugger might exhibit confusing behavior because a running process can display output on the screen while you are entering commands to examine a different process that is stopped.

The debugger automatically enters asynchronous mode in either of the following circumstances:

    * You command it to attach to a new process while a previous process is still attached.

    * The process to which dbx is attached forks off a child process, and the debugger automatically attaches to the child process without detaching from the parent. 

The debugger uses several predefined variables to define the behavior of asynchronous debugging. (See also Table 5-8.) The variable $asynch_interface can be viewed as a counter that is incremented by 1 when a new process is attached and decremented by 1 when a process terminates or is detached. The default value is 0.

When $asynch_interface has a positive nonzero value, asynchronous debugging is enabled; when the variable is 0 (zero) or negative, asynchronous debugging is disabled. To prevent dbx from entering asynchronous mode, set the $asynch_interface variable to a negative value. (Note that disabling asynchronous mode might make debugging more difficult if a parent is waiting on a child that is stopped.)

When a process executes a fork( ) or vfork( ) call, dbx attaches to the child process and automatically enters asynchronous mode (if permitted by $asynch_interface). The default behavior is to stop the child process right after the fork. You can change this default by setting the variable $stop_on_fork to 0; in this case, dbx will attach to the child process but not stop it.

The dbx debugger attempts to apply a degree of intelligence to the handling of forks by filtering out many of the fork calls made by various system and library calls. If you want to stop the process on these forks also, you can set the predefined variable $stop_all_forks to 1. This variable's default value is 0. Stopping on all forks can be particularly useful when you are debugging a library routine.

You can use the debugger's plist and switch commands to monitor and switch between processes. 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用DBX调试命令,执行sh返回的shell,怎么再回到DBX?
  • AIX 下dbx一般装在那个位置?多谢。
  • 有关dbx
  • 我是初学,请教大家gdb,dbx,makefile,cc的用法.
  • 有没有用于unix下c开发的dbx调试图形界面的工具?
  • dbx中设置断点的问题?请高手指教
  • dbx这样说~
  • 有关dbx出现的是十六进制地址而非代码段问题
  • 初学者,DBX单步调试,用step命令怎么把参数带进来?
  • 千分放送!请有AIX下dbx调试Oracle proc程序经验的高手解决问题
  • 高分求一个unix下调试工具(dbx dbf 等)的详细说明文档!谢谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3