文章 ID: 000058606 內容類型: 錯誤訊息 最近查看日期: 2024 年 08 月 02 日

在 Linux* 中使用 sgx_emmt 工具時無法查看安全區堆使用方式

BUILT IN - ARTICLE INTRO SECOND COMPONENT
摘要

如何使用允許sgx_emmt報告記憶體使用數據的符號生成指定位址空間映像

描述
  • 使用 sgx-gdb 調試了 Intel® Software Guard Extensions (Intel® SGX) 應用程式,並使用 sgx_emmt 查看記憶體使用方式
  • 將顯示堆疊使用方式,但未顯示峰值堆和已提交的保留記憶體:
    [Peak stack used]: 7 KB
    [Can't get peak heap used]: You may use version script to control symbol export. Please export 'g_peak_heap_used' in your version script.
    [Can't get peak committed reserved memory]: You may use version script to control symbol export. Please export 'g_peak_rsrv_mem_committed' in your version script.
解決方法

根據 Linux* 版Intel® Software Guard Extensions (Intel® SGX) 開發者參考指南Enclave Memory Measurement Tool 部分,導出指定地址空間版本腳本中的符號 g_peak_heap_usedg_peak_rsrv_mem_committed,並將指定地址空間映射與版本腳本連結,如下所述。

請參考 Intel SGX SDK 中的 SampleEnclave,以重用其 Makefile 和版本腳本 SampleEnclave/Enclave/Enclave.lds

  1. 使用 指定位址空間版本文稿的內容建立檔案:

    enclave.so

    {

    global:

    g_global_data_sim;

    g_global_data;

    enclave_entry;

    g_peak_heap_used;

    g_peak_rsrv_mem_committed;

    local:

    *;

    };

  2. 將腳本保存在 指定位址空間的源目錄中,作為 Enclave.lds
  3. 指定位址空間與版本腳本連結,並在Makefile中 定義 符號 __ImageBase ,類似於:

    $ ld -o enclave.so file1.o file2.o \

    -pie -eenclave_entry -nostdlib -nodefaultlibs –nostartfiles --no-undefined \

    --whole-archive –lsgx_trts --no-whole-archive \

    --start-group –lsgx_tstdc ––lsgx_tservice -lsgx_crypto -

    -end-group \

    -Bstatic -Bsymbolic --defsym=__ImageBase=0 --exportdynamic \

    --version-script=enclave.lds

額外資訊

適用於Linux* 的最新Intel® Software Guard Extensions開發人員參考指南位於適用於Linux* Intel® Software Guard Extensions SDK 最新版本的“文檔”部分。

相關產品

本文章適用於 1 產品

顯示全部

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。