程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言程序內存訪問出錯解決方法

C語言程序內存訪問出錯解決方法

編輯:關於C

 C語言編寫的程序運行效率高,但是 C 語言最大的好處和壞處是它允許直接操作內存,如果使用不小心,這就會導致程序的非法推出
而且當程序過大時,此類錯誤非常難查,下面介紹一種方法,從錯誤的內存地址反向查找出問題的程序

linux 平台:
1. 在程序信號處理部分, 加入代碼捕捉引起錯誤點的地址,方法參考文章
http://www-128.ibm.com/developerworks/cn/linux/l-sigdebug.html
   簡單來說,方法就是在注冊自己的信號處理函數,在這個函數中加入獲取內存錯誤地址的代碼,並把結果寫到一個日志文件中。
2. 編譯 DEBUG 版本 程序 (compile 時用 -g , 生成可執行文件後不用 strip 去掉symbol 信息)
3. 在程序出問題時, 查看日志記錄, 得到錯誤點的地址.
4. 用objdump -S  導出Debug 版本的匯編代碼, 查找錯誤地址, 則得出那條語句出錯.


windows 下c 語言調試
1. release 版編譯/連接選項, 把"generate debug info" 打鉤選擇
2.dumpbin /DISASM /OUT:dump.out.txt.1 prep.exe 可反編譯exe文件
3.得到程序非法地址(可從管理工具-》事件查看器裡得到),與匯編比較。
本文來自:  ( ) 詳細出處參考:http:// /show.asp?id=685

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved