看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux GCC 問題(Question): 最近想用 gcc -fstack-protector-all 的功能,來偵測 stack 被覆蓋。程式碼如文末所附,gcc -fstack-protector-all -g a.c 所編出的檔案,可以成功偵測到覆蓋,但沒有顯示出現問題的 function或位置。 *** stack smashing detected ***: <unknown> terminated 如果用 gdb 來載入 coredump 檔,是可以回推到其發生問題的 地方,但是覺得這樣有些不方便。 理論上印出位址應該是可行才對,不知是否有前輩知道是否辦 的到? 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> void hello() { int i; char buf[128]; for(i=0;i<1000;i++) buf[i] = 0; } int main() { hello(); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.70.80 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1432213574.A.2ED.html
Feis: 用 -fsanitize=address ? 05/21 21:50
Bencrie: 直接跑 valgrind 如何?它應該會直接跟你說存取越界 05/21 22:45
Bencrie: 試了一下 valgrind 好像對這種問題無反應 orz 05/21 23:02
Bencrie: 用一樓的開關吧,資訊超豐富(還彩色的 05/21 23:04
joe4guest: 抱歉忘了提,我是arm的gcc,這功能太新還沒有,不過也 05/21 23:34
joe4guest: 謝謝 Feis 的建議,以前都不知道有這功能. 05/21 23:34