479 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
		
		
			
		
	
	
			479 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
							 | 
						||
| 
								 | 
							
								#This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
							 | 
						||
| 
								 | 
							
								#be copied by any method or incorporated into another program without
							 | 
						||
| 
								 | 
							
								#the express written consent of Aerospace C.Power. This Information or any portion
							 | 
						||
| 
								 | 
							
								#thereof remains the property of Aerospace C.Power. The Information contained herein
							 | 
						||
| 
								 | 
							
								#is believed to be accurate and Aerospace C.Power assumes no responsibility or
							 | 
						||
| 
								 | 
							
								#liability for its use in any way and conveys no license or title under
							 | 
						||
| 
								 | 
							
								#any patent or copyright and makes no representation or warranty that this
							 | 
						||
| 
								 | 
							
								#Information is free from patent or copyright infringement.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  Preface:  GDB Script To Parser GDB Core or CoreDump
							 | 
						||
| 
								 | 
							
								#            Display Tasks and Their Stacks
							 | 
						||
| 
								 | 
							
								#            By Zhihua  v1.0.0 
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#  History: 
							 | 
						||
| 
								 | 
							
								#  2017-06-07  Init version. Add dump OS global statistics variable and task TCB/Stacks
							 | 
						||
| 
								 | 
							
								#  2017-06-08  Dump Heap Usage
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# turn on logging
							 | 
						||
| 
								 | 
							
								set logging off
							 | 
						||
| 
								 | 
							
								shell rm -f ./rtosdump.txt
							 | 
						||
| 
								 | 
							
								set logging file rtosdump.txt  
							 | 
						||
| 
								 | 
							
								set logging on
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 1: dump full 512 DWORD stack space. (note: TIME SRV is 1024 DWORDs)
							 | 
						||
| 
								 | 
							
								# 0: only dump stack from current top to base.
							 | 
						||
| 
								 | 
							
								set $stack_dumpfull = 0 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# TCB_t->pxStack
							 | 
						||
| 
								 | 
							
								set $stack_end=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# TCB_t->pxStack+512
							 | 
						||
| 
								 | 
							
								set $stack_top=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# TCB-_t>pxTopOfStack
							 | 
						||
| 
								 | 
							
								set $stack_cur=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Default HT task size. currently, HT.out use same stack size
							 | 
						||
| 
								 | 
							
								set $stack_size=512
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# S0 register, used into reverse call stack
							 | 
						||
| 
								 | 
							
								set $stack_s0=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# unused stack size 
							 | 
						||
| 
								 | 
							
								set $stack_unused=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# flag to indicate current analysis TCB is TMR SRV
							 | 
						||
| 
								 | 
							
								set $istimersrv=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  Format Marker
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								define Make_FMTMarker
							 | 
						||
| 
								 | 
							
								    echo \n 
							 | 
						||
| 
								 | 
							
								    echo ---------------------------------------------------------------------------------------------\n
							 | 
						||
| 
								 | 
							
								    echo \n
							 | 
						||
| 
								 | 
							
								end 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								define Dump_HeapInfo
							 | 
						||
| 
								 | 
							
								    echo start to dump heap usage\n
							 | 
						||
| 
								 | 
							
								    echo heap start at:\n
							 | 
						||
| 
								 | 
							
								    p (int)&ucHeap
							 | 
						||
| 
								 | 
							
								    echo heap stop at:\n
							 | 
						||
| 
								 | 
							
								    p (int)xStart.pxNextFreeBlock
							 | 
						||
| 
								 | 
							
								    echo heap size(K):\n
							 | 
						||
| 
								 | 
							
								    p/d sizeof(ucHeap)/1024
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    echo \n
							 | 
						||
| 
								 | 
							
								    set $FreeList_Cur = xStart
							 | 
						||
| 
								 | 
							
								    while ($FreeList_Cur.pxNextFreeBlock != 0)
							 | 
						||
| 
								 | 
							
								        p $FreeList_Cur
							 | 
						||
| 
								 | 
							
								        set $FreeList_Cur = *$FreeList_Cur.pxNextFreeBlock
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    echo \n
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    echo Full Stack Usage:\n
							 | 
						||
| 
								 | 
							
								    echo total_mem:(K)\n
							 | 
						||
| 
								 | 
							
								    p/d  total_mem/1024
							 | 
						||
| 
								 | 
							
								    echo cvg_total_mem:(K)\n
							 | 
						||
| 
								 | 
							
								    p/d cvg_total_mem/1024
							 | 
						||
| 
								 | 
							
								    echo mac_total_mem: (K)\n
							 | 
						||
| 
								 | 
							
								    p/d  mac_total_mem/1024
							 | 
						||
| 
								 | 
							
								    echo misc_total_mem: (K)\n
							 | 
						||
| 
								 | 
							
								    p/d misc_total_mem/1024
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    echo RTOS core Usage:(K)\n
							 | 
						||
| 
								 | 
							
								    p/d (sizeof(ucHeap) - xFreeBytesRemaining - total_mem)/1024
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    echo heap free (K):\n
							 | 
						||
| 
								 | 
							
								    p/d xFreeBytesRemaining/1024
							 | 
						||
| 
								 | 
							
								    echo heap lowest free(K):\n
							 | 
						||
| 
								 | 
							
								    p/d xMinimumEverFreeBytesRemaining/1024
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    echo \n
							 | 
						||
| 
								 | 
							
								    echo Detail Moudle useage\n
							 | 
						||
| 
								 | 
							
								    set $mem_idx = 0
							 | 
						||
| 
								 | 
							
								    while ($mem_idx != 0xFF)
							 | 
						||
| 
								 | 
							
								        if mid_mem[$mem_idx] > 0
							 | 
						||
| 
								 | 
							
								            printf "mid_mem[%d]=0x%x\n",$mem_idx, mid_mem[$mem_idx]
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								        set $mem_idx = $mem_idx+1
							 | 
						||
| 
								 | 
							
								    end    
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Local Function to trave stacks from up to down
							 | 
						||
| 
								 | 
							
								# 
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								define travel_stack
							 | 
						||
| 
								 | 
							
								    set $is_pxCurTCB = 0
							 | 
						||
| 
								 | 
							
								    set $ptr_nextstack=0
							 | 
						||
| 
								 | 
							
								    set $ptr_ra=0
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								    #judge wheter current running TCB
							 | 
						||
| 
								 | 
							
								    if $stack_s0 > 0
							 | 
						||
| 
								 | 
							
								      set $is_pxCurTCB = 1
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    echo \n
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if $is_pxCurTCB > 0
							 | 
						||
| 
								 | 
							
								        x $pc
							 | 
						||
| 
								 | 
							
								        x $ra
							 | 
						||
| 
								 | 
							
								        set $ptr_nextstack= $s0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        while( $ptr_nextstack < $stack_top )
							 | 
						||
| 
								 | 
							
								            set $ptr_ra = *($ptr_nextstack-4)
							 | 
						||
| 
								 | 
							
								            set $ptr_nextstack = *($ptr_nextstack-8)
							 | 
						||
| 
								 | 
							
								            if $ptr_ra == $ptr_nextstack
							 | 
						||
| 
								 | 
							
								               echo -----------------Interrupt context swith\n
							 | 
						||
| 
								 | 
							
								            else
							 | 
						||
| 
								 | 
							
								               x $ptr_ra
							 | 
						||
| 
								 | 
							
								            end
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            if $ptr_nextstack == 0xa5a5a5a5
							 | 
						||
| 
								 | 
							
								               set $ptr_nextstack  = $stack_top
							 | 
						||
| 
								 | 
							
								            end 
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								        set $task_pc = *($stack_cur+124) 
							 | 
						||
| 
								 | 
							
								        x $task_pc
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        set $task_ra = *$stack_cur
							 | 
						||
| 
								 | 
							
								        x $task_ra
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        set $ptr_nextstack= *($stack_cur+28)
							 | 
						||
| 
								 | 
							
								        while( $ptr_nextstack < $stack_top )
							 | 
						||
| 
								 | 
							
								            set $ptr_ra = *($ptr_nextstack-4)
							 | 
						||
| 
								 | 
							
								            set $ptr_nextstack = *($ptr_nextstack-8)
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            if $ptr_ra == $ptr_nextstack
							 | 
						||
| 
								 | 
							
								               #echo -----------------Interrupt context swith\n
							 | 
						||
| 
								 | 
							
								            else
							 | 
						||
| 
								 | 
							
								               x $ptr_ra
							 | 
						||
| 
								 | 
							
								            end
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            if $ptr_nextstack == 0xa5a5a5a5
							 | 
						||
| 
								 | 
							
								               set $ptr_nextstack  = $stack_top
							 | 
						||
| 
								 | 
							
								            end 
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								     
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  Dump Stack
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								define dump_stack
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    set $stact_printcur = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (unsigned int)$stack_cur > (unsigned int)$stack_top
							 | 
						||
| 
								 | 
							
								     set $istimersrv = 1
							 | 
						||
| 
								 | 
							
								     set $stack_top = $stack_top + 512
							 | 
						||
| 
								 | 
							
								     #echo TMR SRV\n  
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    echo stack_end:\n
							 | 
						||
| 
								 | 
							
								    p (unsigned int)$stack_end
							 | 
						||
| 
								 | 
							
								    echo stack_cur:\n
							 | 
						||
| 
								 | 
							
								    p (unsigned int)$stack_cur
							 | 
						||
| 
								 | 
							
								    echo stack_top:\n
							 | 
						||
| 
								 | 
							
								    p (unsigned int)$stack_top
							 | 
						||
| 
								 | 
							
								    echo stack_s0:\n
							 | 
						||
| 
								 | 
							
								    p $stack_s0
							 | 
						||
| 
								 | 
							
								    echo \n
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								    echo stack_unused:\n
							 | 
						||
| 
								 | 
							
								    p $stack_unused = (int)$stack_cur - (int)$stack_end
							 | 
						||
| 
								 | 
							
								    echo stack_used:\n
							 | 
						||
| 
								 | 
							
								    p $stack_used = (int )$stack_top - (int)$stack_cur
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if $stack_dumpfull > 0
							 | 
						||
| 
								 | 
							
								       if $istimersrv > 0
							 | 
						||
| 
								 | 
							
								         x/1024xw (unsigned int)$stack_end
							 | 
						||
| 
								 | 
							
								       else
							 | 
						||
| 
								 | 
							
								         x/512xw (unsigned int)$stack_end
							 | 
						||
| 
								 | 
							
								       end
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								       set $stact_printcur =  $stack_cur
							 | 
						||
| 
								 | 
							
								       while($stack_used > 0)
							 | 
						||
| 
								 | 
							
								          x/4xw (unsigned int)$stact_printcur
							 | 
						||
| 
								 | 
							
								          set $stact_printcur = $stact_printcur + 16
							 | 
						||
| 
								 | 
							
								          set $stack_used = $stack_used -16
							 | 
						||
| 
								 | 
							
								       end
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Make_FMTMarker
							 | 
						||
| 
								 | 
							
								Dump_HeapInfo
							 | 
						||
| 
								 | 
							
								Make_FMTMarker
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  Dump Global Task Variable
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								Make_FMTMarker
							 | 
						||
| 
								 | 
							
								echo p uxCurrentNumberOfTasks\n
							 | 
						||
| 
								 | 
							
								p uxCurrentNumberOfTasks
							 | 
						||
| 
								 | 
							
								echo p uxTaskNumber\n
							 | 
						||
| 
								 | 
							
								p uxTaskNumber
							 | 
						||
| 
								 | 
							
								echo p xTickCount\n
							 | 
						||
| 
								 | 
							
								p xTickCount
							 | 
						||
| 
								 | 
							
								echo p uxPendedTicks\n
							 | 
						||
| 
								 | 
							
								p uxPendedTicks
							 | 
						||
| 
								 | 
							
								echo p xSchedulerRunning\n
							 | 
						||
| 
								 | 
							
								p xSchedulerRunning
							 | 
						||
| 
								 | 
							
								echo p xNextTaskUnblockTime\n
							 | 
						||
| 
								 | 
							
								p xNextTaskUnblockTime
							 | 
						||
| 
								 | 
							
								echo p uxSchedulerSuspended\n
							 | 
						||
| 
								 | 
							
								p uxSchedulerSuspended
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  Analysis pxCurrentTCB
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Make_FMTMarker
							 | 
						||
| 
								 | 
							
								#p *pxCurrentTCB
							 | 
						||
| 
								 | 
							
								p (*pxCurrentTCB)->pcTaskName
							 | 
						||
| 
								 | 
							
								p (*pxCurrentTCB)->pxStack
							 | 
						||
| 
								 | 
							
								p (*pxCurrentTCB)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								set $stack_end= (*pxCurrentTCB)->pxStack
							 | 
						||
| 
								 | 
							
								set $stack_cur = $sp
							 | 
						||
| 
								 | 
							
								set $stack_top = $stack_end + $stack_size
							 | 
						||
| 
								 | 
							
								set $stack_s0 = $s0
							 | 
						||
| 
								 | 
							
								#dump_stack
							 | 
						||
| 
								 | 
							
								travel_stack
							 | 
						||
| 
								 | 
							
								Make_FMTMarker
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  Analysis xSuspendedTaskList
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if xSuspendedTaskList.uxNumberOfItems >0
							 | 
						||
| 
								 | 
							
								   echo xSuspendedTaskList.uxNumberOfItems\n
							 | 
						||
| 
								 | 
							
								   p xSuspendedTaskList.uxNumberOfItems
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   set $list_end = xSuspendedTaskList->pxIndex
							 | 
						||
| 
								 | 
							
								   set $list_start = xSuspendedTaskList->xListEnd.pxNext
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								   while ($list_start != $list_end)
							 | 
						||
| 
								 | 
							
								       Make_FMTMarker
							 | 
						||
| 
								 | 
							
								       #p $list_start
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       set $tcb = (char*)$list_start - 4
							 | 
						||
| 
								 | 
							
								       #p (TCB_t)*$tcb
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pcTaskName
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       set $stack_end= ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       set $stack_cur = (unsigned int)((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_top = $stack_end+$stack_size
							 | 
						||
| 
								 | 
							
								       set $stack_s0 = 0
							 | 
						||
| 
								 | 
							
								       #dump_stack
							 | 
						||
| 
								 | 
							
								       travel_stack
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       set $list_start = $list_start.pxNext
							 | 
						||
| 
								 | 
							
								       Make_FMTMarker
							 | 
						||
| 
								 | 
							
								   end
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  Analysis pxReadyTasksLists
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set $readyTaskList_index = 0
							 | 
						||
| 
								 | 
							
								set $readyTaskList_Max = 7
							 | 
						||
| 
								 | 
							
								while ($readyTaskList_index < $readyTaskList_Max)
							 | 
						||
| 
								 | 
							
								       if pxReadyTasksLists[$readyTaskList_index].uxNumberOfItems >0
							 | 
						||
| 
								 | 
							
								          echo ready task array index:\n
							 | 
						||
| 
								 | 
							
								          p $readyTaskList_index
							 | 
						||
| 
								 | 
							
								          echo num\n
							 | 
						||
| 
								 | 
							
								          p pxReadyTasksLists[$readyTaskList_index].uxNumberOfItems
							 | 
						||
| 
								 | 
							
								          
							 | 
						||
| 
								 | 
							
								          set $list_end = pxReadyTasksLists[$readyTaskList_index]->pxIndex
							 | 
						||
| 
								 | 
							
								          set $list_start = pxReadyTasksLists[$readyTaskList_index]->xListEnd.pxNext
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          while ($list_start != $list_end)
							 | 
						||
| 
								 | 
							
								             Make_FMTMarker
							 | 
						||
| 
								 | 
							
								             set $tcb = (char*)$list_start - 4
							 | 
						||
| 
								 | 
							
								             #p (TCB_t)*$tcb
							 | 
						||
| 
								 | 
							
								             p ((TCB_t)*$tcb)->pcTaskName
							 | 
						||
| 
								 | 
							
								             p ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								             p ((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								             
							 | 
						||
| 
								 | 
							
								             set $stack_end= ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								             set $stack_cur = (unsigned int)((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								             set $stack_top = $stack_end+$stack_size
							 | 
						||
| 
								 | 
							
								             set $stack_s0 = 0
							 | 
						||
| 
								 | 
							
								             #dump_stack
							 | 
						||
| 
								 | 
							
								             travel_stack
							 | 
						||
| 
								 | 
							
								             set $list_start = $list_start.pxNext
							 | 
						||
| 
								 | 
							
								             Make_FMTMarker
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								      
							 | 
						||
| 
								 | 
							
								       end
							 | 
						||
| 
								 | 
							
								       set $readyTaskList_index = $readyTaskList_index+1
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if xDelayedTaskList1.uxNumberOfItems >0
							 | 
						||
| 
								 | 
							
								   Make_FMTMarker
							 | 
						||
| 
								 | 
							
								   echo xDelayedTaskList1.uxNumberOfItems\n
							 | 
						||
| 
								 | 
							
								   p xDelayedTaskList1.uxNumberOfItems
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   set $list_end = xDelayedTaskList1->pxIndex
							 | 
						||
| 
								 | 
							
								   set $list_start = xDelayedTaskList1->xListEnd.pxNext
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								   while ($list_start != $list_end)
							 | 
						||
| 
								 | 
							
								       set $tcb = (char*)$list_start - 4
							 | 
						||
| 
								 | 
							
								       #p (TCB_t)*$tcb
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pcTaskName
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_end= ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       set $stack_cur = (unsigned int)((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_top = $stack_end+$stack_size
							 | 
						||
| 
								 | 
							
								       set $stack_s0 = 0
							 | 
						||
| 
								 | 
							
								       #dump_stack
							 | 
						||
| 
								 | 
							
								       travel_stack
							 | 
						||
| 
								 | 
							
								       set $list_start = $list_start.pxNext
							 | 
						||
| 
								 | 
							
								   end
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if xDelayedTaskList2.uxNumberOfItems >0
							 | 
						||
| 
								 | 
							
								   Make_FMTMarker
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   echo xDelayedTaskList2.uxNumberOfItems\n
							 | 
						||
| 
								 | 
							
								   p xDelayedTaskList2.uxNumberOfItems
							 | 
						||
| 
								 | 
							
								   set $list_end = xDelayedTaskList2->pxIndex
							 | 
						||
| 
								 | 
							
								   set $list_start = xDelayedTaskList2->xListEnd.pxNext
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								   while ($list_start != $list_end)
							 | 
						||
| 
								 | 
							
								       set $tcb = (char*)$list_start - 4
							 | 
						||
| 
								 | 
							
								       #p (TCB_t)*$tcb
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pcTaskName
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_end= ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       set $stack_cur = (unsigned int)((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_top = $stack_end+$stack_size
							 | 
						||
| 
								 | 
							
								       set $stack_s0 = 0
							 | 
						||
| 
								 | 
							
								       #dump_stack
							 | 
						||
| 
								 | 
							
								       travel_stack
							 | 
						||
| 
								 | 
							
								       set $list_start = $list_start.pxNext
							 | 
						||
| 
								 | 
							
								   end
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if xPendingReadyList.uxNumberOfItems >0
							 | 
						||
| 
								 | 
							
								   Make_FMTMarker
							 | 
						||
| 
								 | 
							
								   echo xPendingReadyList.uxNumberOfItems\n
							 | 
						||
| 
								 | 
							
								   p xPendingReadyList.uxNumberOfItems
							 | 
						||
| 
								 | 
							
								   set $list_end = xPendingReadyList->pxIndex
							 | 
						||
| 
								 | 
							
								   set $list_start = xPendingReadyList->xListEnd.pxNext
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								   while ($list_start != $list_end)
							 | 
						||
| 
								 | 
							
								       p $list_start
							 | 
						||
| 
								 | 
							
								       set $tcb = (char*)$list_start - 4
							 | 
						||
| 
								 | 
							
								       #p (TCB_t)*$tcb
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pcTaskName
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_end= ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       set $stack_cur = (unsigned int)((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_top = $stack_end+$stack_size
							 | 
						||
| 
								 | 
							
								       set $stack_s0 = 0
							 | 
						||
| 
								 | 
							
								       #dump_stack
							 | 
						||
| 
								 | 
							
								       travel_stack
							 | 
						||
| 
								 | 
							
								       set $list_start = $list_start.pxNext
							 | 
						||
| 
								 | 
							
								   end
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if xTasksWaitingTermination.uxNumberOfItems >0
							 | 
						||
| 
								 | 
							
								   Make_FMTMarker
							 | 
						||
| 
								 | 
							
								   echo xTasksWaitingTermination.uxNumberOfItems\n
							 | 
						||
| 
								 | 
							
								   p xTasksWaitingTermination.uxNumberOfItems
							 | 
						||
| 
								 | 
							
								   set $list_end = xTasksWaitingTermination->pxIndex
							 | 
						||
| 
								 | 
							
								   set $list_start = xTasksWaitingTermination->xListEnd.pxNext
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								   while ($list_start != $list_end)
							 | 
						||
| 
								 | 
							
								       set $tcb = (char*)$list_start - 4
							 | 
						||
| 
								 | 
							
								       #p (TCB_t)*$tcb
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pcTaskName
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       p ((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_end= ((TCB_t)*$tcb)->pxStack
							 | 
						||
| 
								 | 
							
								       set $stack_cur = (unsigned int)((TCB_t)*$tcb)->pxTopOfStack
							 | 
						||
| 
								 | 
							
								       set $stack_top = $stack_end+$stack_size
							 | 
						||
| 
								 | 
							
								       set $stack_s0 = 0
							 | 
						||
| 
								 | 
							
								       #dump_stack
							 | 
						||
| 
								 | 
							
								       travel_stack
							 | 
						||
| 
								 | 
							
								       set $list_start = $list_start.pxNext
							 | 
						||
| 
								 | 
							
								   end
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Turn off log
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								set logging off
							 |