0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何查看程序棧的使用情況

我快閉嘴 ? 來源:瑞薩MCU小百科 ? 作者:瑞薩MCU小百科 ? 2022-09-06 13:10 ? 次閱讀

開發(fā)環(huán)境:CS+ for CA,CX

MCURL78系列

仿真器SF3000E1

程序的內(nèi)存分配

一個(gè)由C/C++編譯的程序占用的內(nèi)存分為以下幾個(gè)部分:

棧區(qū)(stack)由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。

堆區(qū)(heap)一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。

全局區(qū)(靜態(tài)區(qū))(static)全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后有系統(tǒng)釋放。

文字常量區(qū)—常量字符串就是放在這里的。程序結(jié)束后由系統(tǒng)釋放。

程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼。

棧溢出的危害

棧溢出就是緩沖區(qū)溢出的一種。由于緩沖區(qū)溢出而使得有用的存儲單元被改寫,往往會引發(fā)不可預(yù)料的后果。程序在運(yùn)行過程中,為了臨時(shí)存取數(shù)據(jù)的需要,一般都要分配一些內(nèi)存空間,通常稱這些空間為緩沖區(qū)。如果向緩沖區(qū)中寫入超過其本身長度的數(shù)據(jù),以致于緩沖區(qū)無法容納,就會造成緩沖區(qū)以外的存儲單元被改寫,這種現(xiàn)象就稱為緩沖區(qū)溢出。緩沖區(qū)長度一般與用戶自己定義的緩沖變量的類型有關(guān)。

如何查看程序棧的使用情況

針對瑞薩的RL78系列MCU去查看代碼中使用了多少??臻g,可以按照如下步驟進(jìn)行操作。

步驟一

請參照圖1,打開CA78K0R(Build Tool)-->Compile options-->Debug Information選擇Yes(Add to both assembly and object file)(-g2)

de0856d0-2d99-11ed-ba43-dac502259ad0.png

圖1

步驟二

請參照圖2,打開CA78K0R(Build Tool)-->Compile options-->Assembly file選擇Yes(With no C source info)(-a)。

de2dd32e-2d99-11ed-ba43-dac502259ad0.png

圖2

步驟三

請參照圖3,將工程項(xiàng)目進(jìn)行編譯。

de567748-2d99-11ed-ba43-dac502259ad0.png

圖3

步驟四

請參照圖4,打開Tool-->Startup Stack Usage Tracer,打開后會彈出如圖5和圖6的窗口。會顯示我們每個(gè)源文件與每個(gè)函數(shù)所占用的??臻g大小。

de7d13da-2d99-11ed-ba43-dac502259ad0.png

圖4

dea68a76-2d99-11ed-ba43-dac502259ad0.png

圖5

dec094b6-2d99-11ed-ba43-dac502259ad0.png

圖6

如圖6??臻g使用情況例子說明

main函數(shù)使用的占空間為18個(gè)字節(jié),計(jì)算是根據(jù)其調(diào)用的所有的函數(shù)的占空間使用的總和。其中調(diào)用的各個(gè)函數(shù)R_FDL_Write用到8個(gè)字節(jié)棧空間,R_FDL_Write用到8個(gè)字節(jié)棧空間,以及所有可以中斷的??臻g。

dedb515c-2d99-11ed-ba43-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16667

    瀏覽量

    347768
  • 程序
    +關(guān)注

    關(guān)注

    115

    文章

    3720

    瀏覽量

    80356
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48895

原文標(biāo)題:CS+ for CA,CX查看RL78程序棧的使用

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    查看Linux系統(tǒng)內(nèi)存使用情況的幾種方法

    在Linux系統(tǒng)中,內(nèi)存監(jiān)控是優(yōu)化系統(tǒng)性能的關(guān)鍵。本文為你介紹12種方法,幫助你全面掌握Linux系統(tǒng)的內(nèi)存使用情況。這些方法包括查看/proc/meminfo、使用atop、free、GNOME System Monitor等工具,讓你快速獲取有關(guān)物理內(nèi)存、交換空間、緩
    的頭像 發(fā)表于 11-13 09:30 ?9852次閱讀
    <b class='flag-5'>查看</b>Linux系統(tǒng)內(nèi)存<b class='flag-5'>使用情況</b>的幾種方法

    請問TC397如何查看RAM和pFlash的使用情況?

    請問 TC397 如何查看 RAM 和 pFlash 的使用情況
    發(fā)表于 01-19 06:37

    rtthread編譯后如何查看堆??臻g使用情況

    rtthread編譯后如何查看堆??臻g使用情況,現(xiàn)在只能在編譯完成后看到總大小,有沒有辦法能看到詳細(xì)的使用情況。 由于RAM只有128K,除去內(nèi)存池32k,想看看剩余的RAM在哪用了
    發(fā)表于 03-05 07:58

    CUBEIDE運(yùn)行完可以看RAM的使用情況,運(yùn)行中可以實(shí)時(shí)查看RAM的使用情況嗎?

    CUBEIDE運(yùn)行完可以看RAM的使用情況,運(yùn)行中可以實(shí)時(shí)查看RAM的使用情況嗎?以及負(fù)載情況? 圖片是運(yùn)行完可以看RAM使用情況,是否可
    發(fā)表于 03-12 07:56

    如何查看TC397內(nèi)存的使用情況?

    Hi,請問,如何查看 TC397 內(nèi)存的使用情況?謝謝!
    發(fā)表于 05-22 07:50

    linux的系統(tǒng)內(nèi)存使用情況查看

    通過free命令可以查看系統(tǒng)內(nèi)存使用情況
    發(fā)表于 07-15 06:43

    如何查看RAM使用情況?

    嗨, 我正在使用STM32L053 Nucleo,我已經(jīng)為它運(yùn)行了一些代碼,我希望做一個(gè)RAM估計(jì)來查看當(dāng)前固件的RAM使用情況。如何查看RAM使用情況? 問候#記憶
    發(fā)表于 08-05 10:08

    STM32H7的FLASH,RAM和使用情況

    第10章 STM32H7的FLASH,RAM和使用情況(map和htm文件)本章為大家介紹編譯器生成的map和htm文件進(jìn)行解析,通過這兩個(gè)文件可以讓大家對工程代碼的認(rèn)識程度提升一個(gè)檔次。10.1 初學(xué)者重要提示10...
    發(fā)表于 08-03 06:18

    怎樣使用Windows自帶的東西查看電源使用情況

    這里使用Windows自帶的東西查看電源使用情況。1.按Win鍵+R,輸入cmd,回車。2.輸入Powercfg /batteryreport回車。3.根據(jù)提示找到電池報(bào)告文件,雙擊打開即可。 ...
    發(fā)表于 12-27 08:08

    SoC如何查看內(nèi)存使用情況

    查看系統(tǒng)內(nèi)存: free -h 查看ION內(nèi)存 NPU內(nèi)存使用情況: cat /sys/kernel/debug/ion/bm_npu_heap_dump/summary | head -2VPU
    發(fā)表于 09-19 07:23

    主流GPS芯片使用情況

    主流GPS芯片使用情況
    發(fā)表于 11-27 14:34 ?13次下載

    Linux文件緩存使用情況和命中率查看的工具詳細(xì)概述

    這里總結(jié)幾個(gè)Linux文件緩存(page cache)使用情況、命中率查看的工具。
    的頭像 發(fā)表于 06-18 17:51 ?8837次閱讀
    Linux文件緩存<b class='flag-5'>使用情況</b>和命中率<b class='flag-5'>查看</b>的工具詳細(xì)概述

    在Linux系統(tǒng)下使用top命令查看CPU使用情況

    在Linux系統(tǒng)下,使用top命令查看CPU使用情況
    發(fā)表于 07-10 11:46 ?4233次閱讀
    在Linux系統(tǒng)下使用top命令<b class='flag-5'>查看</b>CPU<b class='flag-5'>使用情況</b>

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情況

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情況
    發(fā)表于 12-02 09:06 ?13次下載
    STM32/KEIL/MDK <b class='flag-5'>查看</b> FLASH 和 RAM <b class='flag-5'>使用情況</b>

    Windows查看電源使用情況

    這里使用Windows自帶的東西查看電源使用情況。1.按Win鍵+R,輸入cmd,回車。2.輸入Powercfg /batteryreport回車。3.根據(jù)提示找到電池報(bào)告文件,雙擊打開即可。????...
    發(fā)表于 01-05 14:18 ?0次下載
    Windows<b class='flag-5'>查看</b>電源<b class='flag-5'>使用情況</b>