這篇要來講上一篇沒講完的部份,不知道你有沒有實際去試試看,如果不用 gdb 的話那個測試 RCE 的實驗還跑不跑的起來呢?如果你有試過就會知道答案是跑不起來,所...
我們的 main 真的是程式一開始執行的點嗎?還記得在 gdb 中看程式是怎麼執行過來的指令 bt 嗎,我們用 gdb 把中斷點設在 main 函式,在執行起來...
前一篇看完了 Rust 本身加在 main 前的程式碼,對了,前一篇中好像沒有提到 Rust 程式中的那個 C 的 int main(int, char **)...
所以我們平常在執行的程式檔案裡放了些什麼,又是怎麼存的呢?這就要講到執行檔的格式 ELF 了, ELF 的全名是 Executable and Linkable...
在上一篇中有提到 section header 是給連結器看的資訊,那連結器又是什麼呢?連結器主要有兩個功能: 合併靜態函式庫與目的檔 (object fil...
Rust 的 panic 其實是個有趣的機制,怎麼說呢,我們來看個範例程式,請試著自己先在腦中模擬一下這段程式會印出什麼: use std::panic; s...
這篇要來看 panic 實際上是怎麼實作的,在那之前,先來介紹一個工具吧 - cargo-expand ,它可以用來幫我們看 macro 實際展開來長什麼樣子,...
這篇要來看在 panic ,或是例外處理的過程中,編譯器幫了什麼忙,上一篇程式碼的部份最後還剩下 find_eh_action 的內容沒講,因為它是在讀由編譯器...
是說在之前介紹到的 libunwind ,因為它有讀取 frame 資訊的功能,實際上還有個很有用的用途,顯示 backtrace ,另外在 Rust 發生 p...