亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trclib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* trcLib.c - ColdFire stack trace library *//* Copyright 1984-2000 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01b,16jan02,rec  fix name length for symFindByValue01a,17mar00,dra  Created from T1.0.1 ColdFire and T2 m68k ports.*//*This module provides a routine, trcStack(), which traces a stackgiven the current frame pointer, stack pointer, and program counter.The resulting stack trace lists the nested routine calls and their arguments.This module provides the low-level stack trace facility.A higher-level symbolic stack trace, implemented on top of this facility,is provided by the routine tt() in dbgLib.SEE ALSO: dbgLib, tt(),.pG "Debugging"*/#include "vxWorks.h"#include "regs.h"#include "stdio.h"#include "symLib.h"#include "sysSymTbl.h"#include "private/funcBindP.h"#define MAX_TRACE_DEPTH 40 /* maximum number of levels of stack to trace *//* instruction words */#define LINK_A6		0x4e56		/* LINK A6,... */#define RTS		0x4e75		/* RTS */#define JSR_ABS		0x4eb9		/* JSR abs */#define ADD_W		0xdefc		/* ADD.W */#define ADD_L		0xdffc		/* ADD.L */#define ADDQ_W		0x504f		/* ADDQ.W A7 */#define ADDQ_L		0x508f		/* ADDQ.L A7 */#define LEA_A7		0x4fef		/* LEA $x(A7),A7 */#define MOVE_L_A7	0x2e80		/* MOVE.L xxx,(A7) */#define MOVE_L_A6_A7	0x2e75		/* MOVE.L (xxx,A6),A7 *//* globals */int trcDefaultArgs = 5;			/* default # of args to print if trc					 * can't figure out how many *//* forward static functions */static void trcStackLvl (int *fp, INSTR *pc, int depth, FUNCPTR printRtn);static void trcDefaultPrint (INSTR *callAdrs, INSTR *funcAdrs, int nargs, int		*args);static INSTR *trcFindCall (INSTR *returnAdrs);static INSTR *trcFindDest (INSTR *callAdrs);static int trcCountArgs (INSTR *returnAdrs);static INSTR *trcFindFuncStart (int *fp, INSTR *pc);static INSTR *trcFollowBra (INSTR *adrs);/********************************************************************************* trcStack - print a trace of function calls from the stack** This routine provides the low-level stack trace function.  A higher-level* symbolic stack trace, built on top of trcStack(), is provided by tt() in* dbgLib.** This routine prints a list of the nested routine calls that are on the* stack, showing each routine with its parameters.** The stack being traced should be quiescent.  The caller should avoid* tracing its own stack.** PRINT ROUTINE* In order to allow symbolic or alternative printout formats, the call to* this routine includes the <printRtn> parameter, which specifies a* user-supplied routine to be called at each nesting level to print out the* routine name and its arguments.  This routine should be declared as* follows:* .ne 7* .CS*     void printRtn (callAdrs, rtnAdrs, nargs, args)*         INSTR  *callAdrs;  /@ address from which routine was called **         int    rtnAdrs;    /@ address of routine called **         int    nargs;	     /@ number of arguments in call **         int    *args;	     /@ pointer to arguments ** .CE* If <printRtn> is NULL, a default routine will be used that prints out just* the call address, the function address, and the arguments as hexadecimal* values.** CAVEAT* In order to do the trace, a number of assumptions are made.  In general,* the trace will work for all C language routines and for assembly language* routines that start with a LINK instruction.  Most VxWorks assembly* language routines include LINK instructions for exactly this reason.* However, routines written in other languages, strange entries into* routines, or tasks with corrupted stacks can confuse the trace.  Also, all* parameters are assumed to be 32-bit quantities, therefore structures* passed as parameters will be displayed as a number of long integers.** .ne 14* EXAMPLE* The following sequence can be used to trace a VxWorks task given a pointer* to the task's TCB:* .CS* REG_SET regSet;  /@ task's data registers *** taskRegsGet (taskId, &regSet);* trcStack (&regSet, (FUNCPTR)NULL, taskId);* .CE** RETURNS: N/A** SEE ALSO: tt()** NOMANUAL*/void trcStack    (    REG_SET *pRegSet,		/* pointer to register set */    FUNCPTR printRtn,           /* routine to print single function call */    int     tid			/* task's id */    )    {    int		val;			/* address gotten from symbol table */    char	name[MAX_SYS_SYM_LEN+1]; /* string associated with val */    SYM_TYPE	type;			/* type associated with val */    INSTR	instr;			/* next instruction */    int		stackSave;    FAST INSTR *pc = pRegSet->pc;    FAST int *fp = (int *) pRegSet->fpReg;    FAST int *sp = (int *) pRegSet->spReg;    /* use default print routine if none specified */    if (printRtn == NULL)	printRtn = (FUNCPTR) trcDefaultPrint;    /*     * if the current routine doesn't have a stack frame, then we fake one     * by putting the old one on the stack and making fp point to that;     * we KNOW we don't have a stack frame in a few restricted but useful     * cases:     *  1) we are at a LINK or RTS instruction,     *  2) we are the first instruction of a subroutine (this may NOT be     *     a LINK instruction with some compilers)     */    instr = *trcFollowBra (pc);    if ((instr == LINK_A6) || (instr == RTS) ||        ((sysSymTbl != NULL) && (_func_symFindByValue != NULL) &&	 ((* _func_symFindByValue) (sysSymTbl, (int) pc, name, 				    &val, &type) == OK) &&	 (val == (int) pc)))	{	/* no stack frame - fake one */	stackSave = *(sp - 1);		/* save value we're going to clobber */	*(sp - 1) = (int)fp;		/* make new frame pointer by */					/* sticking old one on stack */	fp = sp - 1;			/* and pointing to it */	trcStackLvl (fp, pc, 0, printRtn);	/* do stack trace */	*(sp - 1) = stackSave;		/* restore stack */	}    else	{	trcStackLvl (fp, pc, 0, printRtn);	/* do stack trace */	}    }/************************************************************************** trcStackLvl - recursive stack trace routine** This routine is recursive, being called once for each level of routine* nesting.  The maximum recursion depth is limited to 40 to prevent* garbage stacks from causing this routine to continue unbounded.* The "depth" parameter on the original call should be 0.*/LOCAL void trcStackLvl    (    FAST int *fp,       /* stack frame pointer (A6) */    INSTR *pc,          /* program counter */    int depth,          /* recursion depth */    FUNCPTR printRtn    /* routine to print single function call */    )    {    FAST INSTR *returnAdrs;    if (fp == NULL)	return;			/* stack is untraceable */    returnAdrs = (INSTR *) *(fp + 1);    /* handle oldest calls first, up to MAX_TRACE_DEPTH of them */    if ((*fp != NULL) && (depth < MAX_TRACE_DEPTH))	trcStackLvl ((int *) *fp, returnAdrs, depth + 1, printRtn);    (* printRtn) (trcFindCall (returnAdrs), trcFindFuncStart (fp, pc),		  trcCountArgs (returnAdrs), fp + 2);    }/********************************************************************************* trcDefaultPrint - print a function call** This routine is called by trcStack() to print each level in turn.** If nargs is specified as 0, then a default number of args (trcDefaultArgs)* is printed in brackets ("[..]"), since this often indicates that the* number of args is unknown.*/LOCAL void trcDefaultPrint    (    INSTR *callAdrs,            /* address from which function was called */    INSTR *funcAdrs,            /* address of function called */    FAST int nargs,             /* number of arguments in function call */    int *args                   /* pointer to function args */    )    {    FAST int ix;    BOOL doingDefault = FALSE;    /* if there is no printErr routine do nothing */    if (_func_printErr == NULL)	return;    /* print call address and function address */    (* _func_printErr) ("%6x: %x (", callAdrs, funcAdrs);    /* if no args are specified, print out default number (see doc at top) */    if ((nargs == 0) && (trcDefaultArgs != 0))	{	doingDefault = TRUE;	nargs = trcDefaultArgs;	(* _func_printErr) ("[");	}    /* print args */    for (ix = 0; ix < nargs; ++ix)	{	if (ix != 0)	    (* _func_printErr) (", ");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区在线中文字幕| 亚洲国产精品99久久久久久久久| 成人a免费在线看| 国产一区激情在线| 免费观看成人av| 日本v片在线高清不卡在线观看| 亚洲黄色录像片| 亚洲综合另类小说| 亚洲大尺度视频在线观看| 亚洲国产精品一区二区www在线| 一区二区三区欧美在线观看| 玉足女爽爽91| 视频一区二区三区在线| 亚洲美女淫视频| 亚洲高清免费观看 | 国产精品一区不卡| 床上的激情91.| 欧美在线啊v一区| 欧美一区二区网站| 精品久久久久久久久久久久久久久久久 | 国产高清不卡一区| 国产69精品久久99不卡| 日本精品一区二区三区高清| 欧美日韩国产电影| 精品毛片乱码1区2区3区| 亚洲精品一区二区三区四区高清 | 久久精品久久精品| 成人午夜在线播放| 欧美亚洲动漫精品| 久久久久久9999| 亚洲一区视频在线| 日日欢夜夜爽一区| 成人午夜在线视频| 日韩欧美国产综合一区| 中文字幕av一区二区三区免费看| 亚洲乱码国产乱码精品精98午夜| 日产精品久久久久久久性色| 成人免费毛片a| 欧美一区二区三区喷汁尤物| 一区免费观看视频| 国内精品久久久久影院薰衣草| av资源网一区| 精品国产一区二区三区忘忧草| 亚洲六月丁香色婷婷综合久久| 久久99国产精品尤物| 一本大道综合伊人精品热热| 精品sm捆绑视频| 石原莉奈在线亚洲二区| 成人aa视频在线观看| 欧美mv和日韩mv的网站| 一级中文字幕一区二区| 波多野结衣亚洲一区| 欧美男女性生活在线直播观看| 国产精品视频观看| 国产乱码精品一品二品| 777亚洲妇女| 亚洲一区二区五区| 91啦中文在线观看| 亚洲国产精品成人综合| 国产麻豆精品95视频| 欧美一区二区日韩一区二区| 一区二区三区四区不卡视频| www.成人在线| 亚洲色图丝袜美腿| 成人开心网精品视频| 337p粉嫩大胆色噜噜噜噜亚洲| 天天色综合成人网| 欧美人与禽zozo性伦| 亚洲精品你懂的| 欧亚一区二区三区| 一区二区在线免费| 92国产精品观看| 亚洲欧洲无码一区二区三区| kk眼镜猥琐国模调教系列一区二区| 久久综合九色综合欧美98| 奇米在线7777在线精品 | 免费日韩伦理电影| 欧美日韩国产小视频在线观看| 亚洲图片欧美视频| 欧美三级在线视频| 亚洲一区二区三区中文字幕 | 亚洲国产欧美一区二区三区丁香婷| 国产麻豆成人传媒免费观看| 日韩美女天天操| 欧美一二三区在线| 首页国产丝袜综合| 制服丝袜国产精品| 精品一区二区三区欧美| 国产婷婷精品av在线| 成人久久18免费网站麻豆| 国产精品麻豆99久久久久久| 9色porny自拍视频一区二区| 亚洲黄一区二区三区| 欧美日韩久久一区| 精品亚洲porn| 国产精品对白交换视频 | 26uuu欧美| 北条麻妃一区二区三区| 亚洲国产日韩a在线播放| 56国语精品自产拍在线观看| 国产综合色在线| 亚洲人成亚洲人成在线观看图片| 欧美三级在线看| 国产精品911| 亚洲国产精品麻豆| 久久精品一区四区| 欧美午夜片在线看| 国产高清不卡一区二区| 一区二区三区欧美日韩| 久久青草国产手机看片福利盒子 | 蜜桃一区二区三区在线观看| 国产拍揄自揄精品视频麻豆| 91亚洲精华国产精华精华液| 日本视频中文字幕一区二区三区| 国产欧美一区二区在线观看| 欧美乱妇15p| av一二三不卡影片| 秋霞成人午夜伦在线观看| ...av二区三区久久精品| 日韩欧美中文一区| 91福利在线看| 成人国产视频在线观看| 人人爽香蕉精品| 亚洲成人综合在线| 国产精品灌醉下药二区| 2021久久国产精品不只是精品| 欧美又粗又大又爽| 成人av小说网| 国产老肥熟一区二区三区| 日本网站在线观看一区二区三区| 中文无字幕一区二区三区 | 国产不卡在线一区| 国模套图日韩精品一区二区| 亚洲综合网站在线观看| 国产欧美日韩亚州综合| 精品久久久网站| 91精品免费在线| 欧美日韩国产乱码电影| 91日韩在线专区| gogo大胆日本视频一区| 国产精品自拍三区| 国产一区二区精品久久| 六月婷婷色综合| 蜜桃av一区二区三区电影| 天堂一区二区在线免费观看| 亚洲最色的网站| 亚洲一区二区视频在线| 亚洲国产视频直播| 亚洲电影视频在线| 亚洲自拍与偷拍| 一区二区三区影院| 亚洲小少妇裸体bbw| 一区二区三区在线视频免费| 中文字幕一区二区三区在线播放| 欧美激情中文不卡| 欧美激情一区二区在线| 日韩理论片在线| 亚洲国产精品影院| 日韩精品1区2区3区| 美女视频网站黄色亚洲| 奇米影视7777精品一区二区| 久久99国产精品麻豆| 国产在线国偷精品产拍免费yy| 韩国女主播成人在线观看| 国产精品一区一区| 成人亚洲一区二区一| 94-欧美-setu| 欧美一区二区日韩| 国产三级一区二区三区| 欧美国产综合一区二区| 亚洲三级理论片| 三级欧美韩日大片在线看| 蜜桃视频一区二区三区| 成人夜色视频网站在线观看| 色哟哟一区二区三区| 91精品国产麻豆| 国产婷婷一区二区| 亚洲综合免费观看高清完整版在线| 秋霞电影网一区二区| 福利视频网站一区二区三区| 色综合久久综合网欧美综合网| 欧美丰满美乳xxx高潮www| 国产偷国产偷亚洲高清人白洁 | 日本不卡在线视频| 国产精品99久久久| 欧美日韩在线不卡| 精品精品国产高清一毛片一天堂| 国产精品久久看| 日本vs亚洲vs韩国一区三区 | 色噜噜狠狠成人网p站| 91精品国产欧美一区二区18| 国产精品国产三级国产普通话蜜臀| 亚洲影视在线播放| 国产成人在线色| 欧美一区二区网站| 亚洲综合免费观看高清完整版| 国产一区美女在线| 欧美电影一区二区| 亚洲人妖av一区二区| 国产剧情一区在线|