28、调试多任务与Linux移植指南

调试多任务与Linux移植指南

1. 调试多任务

在处理多线程执行时,开发者通常会遇到两种不同的调试场景。进程可以拥有自己独立的地址空间,也可以与其他执行线程共享地址空间(以及其他系统资源)。对于不共享公共地址空间的独立进程,必须使用单独的独立调试会话进行调试。你可以在目标系统的多个进程上使用gdbserver,并在开发主机上分别调用GDB,以协调多个协作但独立的进程的调试会话。

1.1 调试多个进程

当在GDB下调试的进程使用 fork() 系统调用创建新进程时,GDB有两种操作方式。它可以继续控制和调试父进程,也可以停止调试父进程并附加到新创建的子进程。你可以使用 set follow-fork-mode 命令来控制这种行为,该命令有两种模式: follow parent follow child ,默认情况下GDB会跟随父进程。在这种情况下,子进程在 fork() 成功后立即执行。

以下是一个简单的程序片段,它从 main() 例程中创建多个进程:

for( i=0; i<MAX_PROCESSES; i++ ) {
    /* Creating child process */
    pid[i] = fork();                /* Parent gets non-zero PID */
    if ( pid[i] == -1 ) {
        perror
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值