gdb/strace 一問 - Linux

Selena avatar
By Selena
at 2008-10-01T10:54

Table of Contents

※ 引述《mystea (mystea)》之銘言:
: 不是不肯設breakpoint而是找不到適合的地方.
: 因為程式碼很長, 又是別人寫的. 隨便設的結果就是
: 在不需要停的地方停很多次, 出問題是又不知道究竟
: 跑到了那裡.
: 難道就沒有辦法知道他是從那一行"正常離開"的嗎?

舉例來說,底下這段程式碼永遠都不會印出 final 的字串
也許對你來說正常離開會是在 final 那邊
但是對寫程式的我而言,我想要的正常離開會在別的地方 (雖然這樣不好)

既然你都可以印出 function call 的 stack 了
直接設在最後一個 function 然後 next 下去不就馬上有答案?

#include <stdlib.h>
#include <time.h>

int main() {
srand(time(NULL));
int a = rand()%3 + 1;
if(a == 1) {
printf("first: %d\n",a);
return 0;
}else if (a == 2) {
printf("second: %d\n",a);
return 0;
}else {
printf("third:%d\n",a);
return 0;
}
printf("final\n");
return 0;
}


--


我想你會衰成這樣都是我害的
---- Tizzy Mac

緊張的麥金塔?這是誰(._.?)

--
Tags: Linux

All Comments

Daph Bay avatar
By Daph Bay
at 2008-10-05T11:34
問題是在於, strace印出來的function不是程式裡宣告的那些.
Oscar avatar
By Oscar
at 2008-10-06T03:48
munmap, exit_group這些, 都不是程式作者宣告的...

關於embedded linux的問題

Dora avatar
By Dora
at 2008-10-01T09:52
在一般的linux上要中斷程式都是按ctrl+c 可是小弟在PDA上的linux要中斷程式時 用觸控筆先點ctrl再點c都沒有效果 想請問一下在PDA上要如何中斷程式呢? 感謝 - ...

關於ubonto安裝

Odelette avatar
By Odelette
at 2008-10-01T09:49
※ 引述《jeff781217 (小小沛沛)》之銘言: : 標題: [問題] 關於ubonto安裝 : 時間: Tue Sep 30 18:37:05 2008 : [ 容刪 ] : 到選取硬碟安裝時,他就沒有顯示任何硬碟在上面。 : 我按下一步,他就出現and#34;沒有定義root檔案系統and#34; ...

gdb/strace 一問

Hedda avatar
By Hedda
at 2008-10-01T07:43
不是不肯設breakpoint而是找不到適合的地方. 因為程式碼很長, 又是別人寫的. 隨便設的結果就是 在不需要停的地方停很多次, 出問題是又不知道究竟 跑到了那裡. 難道就沒有辦法知道他是從那一行and#34;正常離開and#34;的嗎? ※ 引述《WalkingIce ( 殺手哥吉拉 13)》之銘 ...

shell script for-loop increment

Ingrid avatar
By Ingrid
at 2008-10-01T07:32
for是對一個Array作遞迴 可以先用seq產生一個你要的所有數字的Array 例如: for i in ` seq 0 0.5 1`; do echo $i; done 產生結果為 0.0 0.5 1.0 同理,若寫為 for i in ` seq 0 0.5 10`; do echo $i; ...

Can't open display

Elizabeth avatar
By Elizabeth
at 2008-10-01T04:12
※ 引述《kenduest.bbsatbbs.sayya.org (小州)》之銘言: : ※ 引述《smallpanpan.bbsatptt.cc (smallpanpan)》之銘言: : andgt; 各位大大好 : andgt; 最近在家嘗試要連到學校工作站 : andgt; 可是一直沒有辦法顯示出東西 ...