関数呼び出しを行うスレッドがありますが、
Thread 1()
{
while(1)
{
msg = msgreceive();
condn= msg->condn;
switch(condn)
{
case 0:
//do sonmething
break;
case 1:
printf("case_1");
function2()
break;
}
}
}
function 2()
{
printf("fn2_Start");
//Do something
function 3();
printf("fn2_end");
}
fucntion3()
{
printf("fn3_Start");
//Do something
printf("fn3_end");
}
通常、私はこの方法でprintfトレースを取得します。
case_1
fn2_Start
fn3_Start
fn3_end
fn2_end
case_1
fn2_Start
fn3_Start
fn3_end
fn2_end
....
....
...
しかし、長期的には、この方法でトレースを取得することがあります
case_1
fn2_tart
fn2_start
fn2 start
case 1
case 1
これは組み込みRTOSデバイス環境です。(MQX)言語-Cとにかく、システムがこのように動作する理由を疑うことができます。これは、システムの負荷が高く、メモリ使用量の約93%で実行されている場合に発生します。