CORE DUMP生成調試

来源:https://www.cnblogs.com/djw316/archive/2019/05/22/10908322.html
-Advertisement-
Play Games

之前我調試嵌入式linux程式,一般是藉助ucontext庫,在發生段錯誤時,直接將錯誤函數列印出來。有同事建議我使用core dump,於是我今天在嵌入式板卡嘗試了core文件的生成,但是也是幾經波折,在網上查了很多資料,才成功生成core文件,所以總結如下: 如果程式段錯誤了,core文件沒有生 ...


之前我調試嵌入式linux程式,一般是藉助ucontext庫,在發生段錯誤時,直接將錯誤函數列印出來。有同事建議我使用core dump,於是我今天在嵌入式板卡嘗試了core文件的生成,但是也是幾經波折,在網上查了很多資料,才成功生成core文件,所以總結如下:

  如果程式段錯誤了,core文件沒有生成,請做如下的嘗試:

  1. 檢查ulimit,輸入命令ulimit-c,看是否是0;建議修改成:ulimit -c unlimited

  2. 檢查kernel選項,CONFIG_ELF_CORE必須要打開。這個選項應該在menu config的general裡面;記不清了,可以用grep搜索一下你的config文件,看當前值是什麼。

  3. 修改/proc/sys/kernel/core_uses_pid;/proc/sys/kernel/core_pattern等文件;這時遇到許可權問題,加sudo也不行。可以用下麵的方式來解決問題:

sudo bash -c "echo "1" >/proc/sys/kernel/core_uses_pid "
sudo bash -c "echo "/opt/app_driver/core-%e-%p-%t" >/proc/sys/kernel/core_pattern"
sudo bash -c "echo "1" >/proc/sys/fs/suid_dumpable"

不要直接sudo 去echo,而是在bash之前加sudo。

原因網上有資料說是:

procfs中的條目由ad hoc代碼管理。在/proc/sys下設置文件許可權和所有權的代碼(proc_sys_setattr)拒絕使用EPERM更改許可權和所有權。
因此無法更改這些文件的許可權或所有權,完全停止。這樣的改變沒有實現,因此root無效。 當您嘗試以非root用戶身份編寫時,會收到許可權錯誤。即使使用sudo echo "/home/user/foo/core.%e.%p" > /proc/sys/kernel/core_pattern,
您嘗試以非root用戶身份編寫:sudo以root身份運行echo,但重定向發生在執行sudo的shell中,該shell沒有提升許可權。使用sudo bash -c '… >…',
重定向在bash實例中執行,該實例由sudo啟動並以root身份運行,因此寫入成功。

也可以用下麵的方式來修改,實際上我就是這麼成功修改的:

sudo sysctl -w kernel.core_pattern=/opt/app_driver/core-%e-%p

 

如此再運行程式,出現段錯誤,就能夠在/opt/app_driver/ 目錄下生成core文件

 生成段錯誤之後,就可以用gdb查看段錯誤信息了。  
1.sudo gdb ./demoout core-xxx-855
2.輸入bt,列印backtrace
3.x/128xw 0xb58cd4e8 來列印記憶體

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ​一、前言 從進行到軟體開發這個行業現在已經有幾年了,在整理出這個套開發框架之前自己做了不少重覆造輪子的事。每次有新的項目總是要耗費不少時間在UI、許可權和系統通用模塊上面,自己累得要死,老闆還罵沒效率。為了能提高開發效率,同時也多拿拿獎金、多存點私房錢,我就著手做了一套以許可權管理為主的快速開發框架。 ...
  • C# -- LinkedList的使用 class Person { public Person() { } public Person(string name, int age, string sex) { this.Name = name; this.Age = age; this.Sex = ...
  • string.Format("{0:t}", DateTime.Parse("2019-1-1 08:30:00")); 轉換為 8:30 這種格式 string.Format("{0:hh:mm}", DateTime.Parse("2019-1-1 08:30:00")); 可以轉換為 08:3 ...
  • 在SQL語句查詢過程中,Sqlserver支持使用LEFT()、RIGHT()、SUBSTRING()等幾個函數對字元串進行截取操作,SubString函數相對於其他兩個函數來說更靈活,使用場景更多,可以指定截取開始的位置以及截取的長度,SubString函數的格式為SubString(expres ...
  • 500.30 ANCM In-Process Handler Load Failure ...
  • 一、協議的定義 要對某種協議進行編解碼操作,就必須知道協議的基本定義,首先我們來看一下 CJ/T188 的數據幀定義(協議定義),瞭解請求數據與響應數據的基本結構。 1.1 CJ/T188 水錶通訊協議 請求幀: | 位元組 | 值 | 描述 | | | | | | 0 | 0x68 | 數據幀開始標 ...
  • 1. 概述 中斷是指出現需要時, CPU暫停執行當前程式,轉而執行新程式的過程。即在程式運行過程中,系統出現了一個必須由CPU立即處理的事務,此時, CPU暫時中止當前程式的執行轉而處理這個事務,這個過程就叫做中斷。 眾多周知, CPU的處理速度比外設的運行速度快很多,外設可以在沒有CPU介入的情況 ...
  • FACL : Filesystem Access Control List 利用文件擴展保存額外的訪問控制許可權setfacl -b:Remove all -m:設定 u:UID:perm g:GID:perm -x:取消 u:UID g:GIDgetfacl + filename 幾個命令:w:顯示 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...