最近查一個bug, 用strings命令分析, 竟然出乎意料地沒有結果, 非常納悶。 最后根據這個線索查出了bug的根本原因。
1. 在C++中, 即使函數在代碼層面沒有被調用, 也會最終編譯到二進制中, 用strings可以分析。
#include <iostream>using namespace std;void fun(){ printf("hello world/n"); // strings分析有結果}int main(){ return 0;}2. 在Go中, 如果函數在代碼層面沒有被調用,或者調用時被編譯器優化, 那么就不會編譯到二進制中, 用strings就查不到該函數的相關信息。
package main import "fmt" func test (a int){ fmt.Println("testxxxxxx") // strings分析無結果}func main() { } package main import "fmt" func test (a int){ a = 1 if a != 1{ fmt.Println("testxxxxxx") //strings分析無結果 }}func main() { test(1)} 再看
package main import "fmt" func test (a int){ if a != 1{ fmt.Println("testxxxxxx") // strings分析有結果 }}func main() { test(1)} 有點意思, 揪出一只大bug.
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接
新聞熱點
疑難解答
圖片精選