日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]Linux下的C程序常常會因為內(nèi)存訪問錯誤等原因造成segment fault(段錯誤),此時如果系統(tǒng)core dump功能是打開的,那么將會有內(nèi)存映像轉(zhuǎn)儲到硬盤上來,之后可以用gdb對core文件進行分析,還原系統(tǒng)發(fā)生段錯誤時刻的堆棧情況。這對于我們發(fā)現(xiàn)程序bug很有幫助。

Linux下的C程序常常會因為內(nèi)存訪問錯誤等原因造成segment fault(段錯誤),此時如果系統(tǒng)core dump功能是打開的,那么將會有內(nèi)存映像轉(zhuǎn)儲到硬盤上來,之后可以用gdb對core文件進行分析,還原系統(tǒng)發(fā)生段錯誤時刻的堆棧情況。這對于我們發(fā)現(xiàn)程序bug很有幫助。

使用ulimit -a可以查看系統(tǒng)core文件的大小限制;使用ulimit -c [kbytes]可以設置系統(tǒng)允許生成的core文件大小,例如

ulimit -c 0 不產(chǎn)生core文件

ulimit -c 100 設置core文件最大為100k

ulimit -c unlimited 不限制core文件大小

先看一段會造成段錯誤的程序:

#include

int main()

{

char *ptr="linuxers.cn";

*ptr=0;

}

編譯運行后結(jié)果如下:

[leconte@localhost test]$ gcc -g -o test a.c

[leconte@localhost test]$ ./test

段錯誤

此時并沒有產(chǎn)生core文件,接下來使用ulimit -c設置core文件大小為無限制,再執(zhí)行./test程序,結(jié)果如下:

[leconte@localhost ~]$ ulimit -a

core file size (blocks, -c) 0

[leconte@localhost test]$ ulimit -c unlimited

[leconte@localhost test]$ ulimit -a

core file size (blocks, -c) unlimited

[leconte@localhost test]$ ./test

段錯誤 (core dumped)

[leconte@localhost test]$ ls -al core.*

-rw------- 1 leconte leconte 139264 01-06 22:31 core.2065

可見core文件已經(jīng)生成,接下來可以用gdb分析,查看堆棧情況:

[leconte@localhost test]$ gdb ./test core.2065

GNU gdb Fedora (6.8-27.el5)

Copyright (C) 2008 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "i386-redhat-linux-gnu"...

warning: exec file is newer than core file.

warning: Can't read pathname for load map: Input/output error.

Reading symbols from /lib/libc.so.6...done.

Loaded symbols for /lib/libc.so.6

Reading symbols from /lib/ld-linux.so.2...done.

Loaded symbols for /lib/ld-linux.so.2

Core was generated by `./test'.

Program terminated with signal 11, Segmentation fault.

[New process 2065]

#0 0x0804836f in main () at a.c:6

6 *ptr=0;

從上述輸出可以清楚的看到,段錯誤出現(xiàn)在a.c的第6行,問題已經(jīng)清晰地定位到了。

很多系統(tǒng)默認的core文件大小都是0,我們可以通過在shell的啟動腳本/etc/bashrc或者~/.bashrc等地方來加入 ulimit -c 命令來指定core文件大小,從而確保core文件能夠生成。

除此之外,還可以在/proc/sys/kernel/core_pattern里設置core文件的文件名模板,詳情請看core的官方man手冊。 (發(fā)布者:chiying)

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

CPU親和度通過限制進程或線程可以運行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數(shù),提高緩存命中率,從而提升系統(tǒng)性能。

關(guān)鍵字: Linux 嵌入式

在Linux系統(tǒng)性能優(yōu)化中,內(nèi)存管理與網(wǎng)絡連接處理是兩大核心領域。vm.swappiness與net.core.somaxconn作為關(guān)鍵內(nèi)核參數(shù),直接影響系統(tǒng)在高負載場景下的穩(wěn)定性與響應速度。本文通過實戰(zhàn)案例解析這兩個...

關(guān)鍵字: Linux 內(nèi)存管理

對于LLM,我使用b谷歌Gemini的免費層,所以唯一的成本是n8n托管。在使用了n8n Cloud的免費積分后,我決定將其托管在Railway上(5美元/月)。然而,由于n8n是開源的,您可以在自己的服務器上托管它,而...

關(guān)鍵字: 人工智能 n8n Linux

在Linux系統(tǒng)管理中,權(quán)限控制是安全運維的核心。本文通過解析/etc/sudoers文件配置與組策略的深度應用,結(jié)合某金融企業(yè)生產(chǎn)環(huán)境案例(成功攔截98.7%的非法提權(quán)嘗試),揭示精細化權(quán)限管理的關(guān)鍵技術(shù)點,包括命令別...

關(guān)鍵字: Linux 用戶權(quán)限 sudoers文件

Linux內(nèi)核中的信號量(Semaphore)是一種用于資源管理的同步原語,它允許多個進程或線程對共享資源進行訪問控制。信號量的主要作用是限制對共享資源的并發(fā)訪問數(shù)量,從而防止系統(tǒng)過載和數(shù)據(jù)不一致的問題。

關(guān)鍵字: Linux 嵌入式

在云計算與容器化技術(shù)蓬勃發(fā)展的今天,Linux網(wǎng)絡命名空間(Network Namespace)已成為構(gòu)建輕量級虛擬網(wǎng)絡的核心組件。某頭部互聯(lián)網(wǎng)企業(yè)通過命名空間技術(shù)將測試環(huán)境資源消耗降低75%,故障隔離效率提升90%。本...

關(guān)鍵字: Linux 云計算

在Linux內(nèi)核4.18+和主流發(fā)行版(RHEL 8/Ubuntu 20.04+)全面轉(zhuǎn)向nftables的背景下,某電商平臺通過遷移將防火墻規(guī)則處理效率提升40%,延遲降低65%。本文基于真實生產(chǎn)環(huán)境案例,詳解從ipt...

關(guān)鍵字: nftables Linux

在Linux設備驅(qū)動開發(fā)中,等待隊列(Wait Queue)是實現(xiàn)進程睡眠與喚醒的核心機制,它允許進程在資源不可用時主動放棄CPU,進入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過C語言模型解析等待隊列的實現(xiàn)原理,結(jié)合...

關(guān)鍵字: 驅(qū)動開發(fā) C語言 Linux

在Unix/Linux進程間通信中,管道(pipe)因其簡單高效被廣泛使用,但默認的半雙工特性和無同步機制容易導致數(shù)據(jù)競爭。本文通過父子進程雙向通信案例,深入分析互斥鎖與狀態(tài)機在管道同步中的應用,實現(xiàn)100%可靠的數(shù)據(jù)傳...

關(guān)鍵字: 管道通信 父子進程 Linux

RTOS :RTOS的核心優(yōu)勢在于其實時性。它采用搶占式調(diào)度策略,確保高優(yōu)先級任務能夠立即獲得CPU資源,從而在最短時間內(nèi)完成處理。RTOS的實時性是通過嚴格的時間管理和任務調(diào)度算法實現(xiàn)的,能夠滿足對時間敏感性要求極高的...

關(guān)鍵字: Linux RTOS
關(guān)閉