gdb/strace 一問 - Linux

By Selena
at 2008-10-01T10:54
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
緊張的麥金塔?這是誰(._.?)
--
: 不是不肯設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

By Daph Bay
at 2008-10-05T11:34
at 2008-10-05T11:34

By Oscar
at 2008-10-06T03:48
at 2008-10-06T03:48
Related Posts
關於embedded linux的問題

By Dora
at 2008-10-01T09:52
at 2008-10-01T09:52
關於ubonto安裝

By Odelette
at 2008-10-01T09:49
at 2008-10-01T09:49
gdb/strace 一問

By Hedda
at 2008-10-01T07:43
at 2008-10-01T07:43
shell script for-loop increment

By Ingrid
at 2008-10-01T07:32
at 2008-10-01T07:32
Can't open display

By Elizabeth
at 2008-10-01T04:12
at 2008-10-01T04:12