我試圖得到執行的語句序列在執行程序用C語言編寫後的目標計劃,但我找不到路。 我不需要在運行時獲得已執行語句的序列。 有沒有辦法做到這一點? 僅供參考,我知道gcov一個報告語句覆蓋,但它不能在目標程序,據報告執行的語句序列,因爲我知道(我想只有在目標程序的源代碼執行的語句的序列)。 我在Linux上運行的C程序用gcc編譯:)有沒有什麼方法可以在目標C程序中獲得執行語句的序列?
爲了您清楚的瞭解,請看下面的例子。
當我執行下面的程序我想執行如下語句序列。
1: int main()
2: {
3: int a = 10;
4: printf("hello");
5: if(a == 10){
6: printf("a == 0");
7: }else{
8: printf("a != 0");}
9: return 0;
10: }
輸出我想要得到的是: (因爲目標程序是什麼我想跟蹤只有一個對行語句,線 序列作爲輸出號足以讓我)
這個問題被問別人幾個小時前(見question),但它是由一些讀者沒有明確的答案關閉。 如果它有衆所周知的解決方案,請讓我知道。
後,如果你問同樣的問題兩次,很可能,這將被關閉的重複。 – anishsane
無法追蹤已完成的程序。您需要在運行時收集這些信息1)使用跟蹤工具,或2)用您自己的方式。 – perreal
在編輯器中看到的行號可能不是實際編譯行數的行號。預處理器包括宏和其他*幕後的所有方式*東西肯定會「干擾」和「更改」您的行號。實際上,輸出結果幾乎沒有用,並且絕對不值得產生它的黑客。最好附加一個調試器並觀察程序流程。 –