core dump

前幾天面試的時候,面試官問我,請大概講一講C++的core dump

當時我一臉懵逼,從來沒聽過。

於是決定了解一下core dump,起碼達到能夠面試的水平。


core dump 核心轉儲

進程終止運行時,操作系統會將此時進程的地址空間的內容、寄存器狀態、堆棧指針等進程狀態信息寫出的一個磁盤文件。


用途

用於調試,查找進程停止的原因


造成core dump的情況

內存訪問越界

  • 由於使用錯誤的下標,導致數組訪問越界
  • 搜索字符串時,依靠字符串結束符來判斷字符串是否結束,但是字符串沒有正常的使用結束符
  • 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函數,將目標字符串讀/寫爆。應該使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函數防止讀寫越界。

多線程程序使用了線程不安全的函數。

多線程讀寫的數據沒有加鎖保護,多個線程讀寫一個全局數據

非法指針

  • 空指針
  • 隨意使用指針轉換

堆棧溢出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章