1. 程式人生 > >嵌入式 Linux下段錯誤的原因和除錯方式

嵌入式 Linux下段錯誤的原因和除錯方式

[email protected]:~/segfault$ catchsegv ./segfault3 Segmentation fault (core dumped) *** Segmentation fault Register dump: EAX: 00000000 EBX: 00fb3ff4 ECX: 00000002 EDX: 00000000 ESI: 080484e5 EDI: 080484e0 EBP: bfb7ad38 ESP: bfb7ad0c EIP: 00ee806a EFLAGS: 00010203 CS: 0073 DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b Trap: 0000000e Error: 00000007 OldMask: 00000000 ESP/signal: bfb7ad0c CR2: 080484e0 Backtrace: /lib/libSegFault.so[0x3b606f] ??:0(??)[0xc76400] /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xe89b56] /build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start
.S:122(_start)[0x8048351] Memory map: 00258000-00273000 r-xp 00000000 08:01 157 /lib/ld-2.10.1.so 00273000-00274000 r--p 0001a000 08:01 157 /lib/ld-2.10.1.so 00274000-00275000 rw-p 0001b000 08:01 157 /lib/ld-2.10.1.so 003b4000-003b7000 r-xp 00000000 08:01 13105 /lib/libSegFault.so 003b7000-003b8000 r--p 00002000 08:01 13105 /lib/libSegFault.so 003b8000-003b9000 rw-p 00003000 08:01 13105 /lib/libSegFault.so 00c76000-00c77000 r-xp 00000000 00:00 0 [vdso] 00e0d000-00e29000 r-xp 00000000 08:01 4817 /lib/libgcc_s.so.1 00e29000-00e2a000 r--p 0001b000 08:01 4817 /lib/libgcc_s.so.1 00e2a000-00e2b000 rw-p 0001c000 08:01 4817 /lib/libgcc_s.so.1 00e73000-00fb1000 r-xp 00000000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so 00fb1000-00fb2000 ---p 0013e000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so 00fb2000-00fb4000 r--p 0013e000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so 00fb4000-00fb5000 rw-p 00140000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so 00fb5000-00fb8000 rw-p 00000000 00:00 0 08048000-08049000 r-xp 00000000 08:01 303895 /home/panfeng/segfault/segfault3 08049000-0804a000 r--p 00000000 08:01 303895 /home/panfeng/segfault/segfault3 0804a000-0804b000 rw-p 00001000 08:01 303895 /home/panfeng/segfault/segfault3 09432000-09457000 rw-p 00000000 00:00 0 [heap] b78cf000-b78d1000 rw-p 00000000 00:00 0 b78df000-b78e1000 rw-p 00000000 00:00 0 bfb67000-bfb7c000 rw-p 00000000 00:00 0 [stack]

相關推薦

嵌入式 Linux錯誤原因除錯方式

[email protected]:~/segfault$ catchsegv ./segfault3 Segmentation fault (core dumped) *** Segmentation fault Register dump: EAX: 00000000 EBX: 00fb3f

Linux環境錯誤的產生原因除錯方法小結(轉)

轉自 最近在Linux環境下做C語言專案,由於是在一個原有專案基礎之上進行二次開發,而且專案工程龐大複雜,出現了不少問題,其中遇到最多、花費時間最長的問題就是著名的“段錯誤”(Segmentation Fault)。藉此機會系統學習了一下,這裡對Linux環境下的段錯誤

Linux環境錯誤(Segmentation fault)的產生原因除錯方法小結

最近在Linux環境下做C語言專案,由於是在一個原有專案基礎之上進行二次開發,而且專案工程龐大複雜,出現了不少問題,其中遇到最多、花費時間最長的問題就是著名的“段錯誤”(Segmentation Fault)。藉此機會系統學習了一下,這裡對Linux環境下的段錯誤做個小結,

Linux環境錯誤的產生原因除錯方法小結

最近在Linux環境下做C語言專案,由於是在一個原有專案基礎之上進行二次開發,而且專案工程龐大複雜,出現了不少問題,其中遇到最多、花費時間最長的問題就是著名的“段錯誤”(Segmentation Fault)。藉此機會系統學習了一下,這裡對Linux環境下的段錯誤做個小結

嵌入式 linux利用backtrace追蹤函式呼叫堆疊以及定位錯誤

一般察看函式執行時堆疊的方法是使用GDB(bt命令)之類的外部偵錯程式,但是,有些時候為了分析程式的BUG,(主要針對長時間執行程式的分析),在程式出錯時打印出函式的呼叫堆疊是非常有用的。在glibc標頭檔案"execinfo.h"中聲明瞭三個函式用於獲取當前執行緒的函式呼

Linux 錯誤(Segmentation fault)除錯方法(轉)

轉自:http://blog.sina.com.cn/s/blog_3e28c8a50100bnin.html 我們在用C/C++語言寫程式的時侯,記憶體管理的絕大部分工作都是需要我們來做的。實際上,記憶體管理是一個比

Linux環境錯誤查錯

       段錯誤是指訪問的記憶體超出了系統給這個程式所設定的記憶體空間,例如訪問了不存在的記憶體地址、訪問了系統保護的記憶體地址、訪問了只讀的記憶體地址等等情況。 1 、訪問不存在的記憶體地址 #include<stdio.h> #include<s

Linux的編輯器編譯器,為什麼除錯的時候需要編譯選項中新增 -g. 同學們自行調研readelf命令,原始碼安裝, rpm安裝, yum安裝

1、除了vim, 還有哪些常用的牛逼的編輯器, 並能夠橫向對比編輯器之間的區別和優缺點 vim是從vi發展出來的一個文字編輯器。程式碼補完、編譯錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。 sed是一種流編輯器,它一次處理一行內容。處理時,把

LINUX I2C驅動偶爾出現錯誤原因之一

LINUX I2C驅動偶爾出現段錯誤原因之一 第一篇部落格,來個好的開端。 在自己寫 觸控式螢幕 I2C 驅動程式(Linux 3.14)的時候,載入的時候會偶爾出現段錯誤, 我們都知道在載入驅動的時候會呼叫 i2c_register_Driver最終找到程式碼,通過 OOPS

linux核心發生錯誤時進行除錯

發生段錯誤原因就是訪問了不該訪問的地址,例如訪問了不存在的記憶體地址、訪問了系統保護的記憶體地址、訪問了只讀的記憶體地址等。 下面根據Oops資訊來分析一下段錯誤 first_drv.c 點選(此處)摺疊或開啟 #include <linux/module.h

嵌入式Linux串列埠除錯

By Toradex秦海 1). 簡介 UART串列埠是嵌入式裝置最為常用的除錯和通訊介面之一,無論是RS232還是RS422/485都有著非常廣泛的應用,因此本文就基於嵌入式Linux演示在User Space進行串列埠除錯。 本文所演示的平臺來自於Toradex Co

Linux編輯、編譯、除錯命令總結——gccgdb描述

GCC   gcc是linux系統整合的編譯器。在linux環境下編輯程式,首先需要克服的便是沒有整合開發環境的一鍵式操作所帶來的麻煩。這其中涉及命令列操作、編譯選項的設定、檔案依賴關係的書寫(makefile)等問題。這裡主要介紹的是關於gcc的常用命令列引

嵌入式 Linux的動態庫原理使用

1.編寫庫的標頭檔案和原始檔.   2.把所有涉及到的原始檔用如下方式編譯為目標檔案:   #  g++/gcc  -g  -c  -fPIC  -o  library1.o  library1.cpp   #  g++/gcc  -g  -c  -fPIC  -o  library2.o  libra

淺析linux kernel錯誤除錯手段

oops,kernel panic, Segmentationfault。相信跟linux kernel打交道的人都會遇到過這些核心提示。根據嚴重性不一樣可以分為:警告,驚慌,還有段錯誤——也就是我們平常遇到的核心崩潰的情況。對於oops和kernel panic而言,事

ubuntulinux核心原始碼閱讀工具除錯方法總結 (2010-10-31 15:21)

一 linux核心原始碼閱讀工具 windows下當然首選source insight, 但是linux下就沒有source insight這麼優秀的工具了,但是也有不少的替代品,但覺絕對部分人會選擇vim+ctags+cscope的組合,還有部分人或選擇wine中的source insight或選擇nav

linux錯誤捕獲errnostrerror()

#define ESUC 0 /* Success */ #define EPERM   1 /* Operation not permitted */ #define ENOENT   2 /* No such file or directory */ #define ESRCH   3 /* No suc

嵌入式LinuxPWM功能除錯

轉載地址:http://www.eefocus.com/toradex/blog/17-05/420816_04520.html By Toradex秦海 1). 簡介 PWM(Pulse-width modulation)介面是嵌入式裝置最為常用的介面之一,常用於電機驅動

linuxjdk的安裝配置

rac -s watermark img 使用 etc 文件拷貝 安裝 com 一、首先依據自己的系統位數在網上下載對應的jdk安裝包 下載地址例如以下:http://www.oracle.com/technetwork/java/javase/downloads/jd

奪命雷公狗---linux NO:27 linux的密碼管理用戶切換以及sudo的使用

意思 發現 which window 明顯 能開 操作 賬戶 修改 我們在windows下用戶名是可以設置空密碼登錄的,但是在linux 裏面必須要設置一個密碼才可以登錄,否則會失敗的。。。 在linux 下設置密碼可以使用 passwd 這個命令來進行設置。。。 但是

LinuxMySQL的備份恢復

mysql備份 再也不用擔心數據丟失了 MySQL備份的原因 1. 災難恢復 2. 審計 3. 測試1234512345mysql的備份類型 1. 根據服務器的在線狀態: 熱備:服務器處於運行狀態 冷備:服務器出去停止狀態 溫備:服務器處於半離線狀態,只能讀,但是不能