国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種程序符號(hào)表的獲取方法及系統(tǒng)的制作方法

      文檔序號(hào):9910806閱讀:845來(lái)源:國(guó)知局
      一種程序符號(hào)表的獲取方法及系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001 ]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種程序符號(hào)表獲取方法及系統(tǒng)。
      【背景技術(shù)】
      [0002] 在計(jì)算機(jī)科學(xué)中,符號(hào)表是一種用于語(yǔ)言翻譯器(例如編譯器和解釋器)中的數(shù)據(jù) 結(jié)構(gòu)。在符號(hào)表中,程序源代碼中的每個(gè)標(biāo)識(shí)符都和它的聲明或使用信息綁定在一起,比如 其數(shù)據(jù)類型、作用域以及內(nèi)存地址。符號(hào)表在編譯程序工作的過(guò)程中需要不斷收集、記錄和 使用源程序中一些語(yǔ)法符號(hào)的類型和特征等相關(guān)信息。這些信息一般以表格形式存儲(chǔ)于系 統(tǒng)中。如常數(shù)表、變量名表、數(shù)組名表、過(guò)程名表、標(biāo)號(hào)表等等,統(tǒng)稱為符號(hào)表。對(duì)于符號(hào)表組 織、構(gòu)造和管理方法的好壞會(huì)直接影響編譯系統(tǒng)的運(yùn)行效率。
      [0003] 符號(hào)表是程序在編譯時(shí)產(chǎn)生的調(diào)試信息,通常情況下程序運(yùn)行是用不到符號(hào)表 的,因此程序在編譯后經(jīng)常會(huì)將所有調(diào)試信息去掉,這樣能有效減少程序大小,或者干脆在 編譯過(guò)程中不產(chǎn)生符號(hào)表。但是在某些情況下,比如做異常分析時(shí)可能需要符號(hào)表,以便能 夠快速的根據(jù)函數(shù)地址找到函數(shù)名。
      [0004] 現(xiàn)有技術(shù)中管理符號(hào)表的方法有兩種,一種是保留符號(hào)表信息,一種是將符號(hào)表 信息導(dǎo)出到特定文件中再刪除符號(hào)表信息。在程序編譯后,保留符號(hào)表信息,會(huì)導(dǎo)致程序占 用較大的空間,優(yōu)點(diǎn)是可以隨時(shí)查看符號(hào)表。在程序編譯后,將符號(hào)表信息導(dǎo)出到特定文件 中,然后將符號(hào)表從程序中刪除,程序不會(huì)占用較大空間,但是獲取符號(hào)表需要人工搜索文 件,使用起來(lái)不方便。

      【發(fā)明內(nèi)容】

      [0005] 本發(fā)明所要解決的技術(shù)問(wèn)題是:現(xiàn)有的程序符號(hào)表的獲取方法導(dǎo)致程序占用較大 空間、獲取效率低的問(wèn)題。
      [0006] 為解決上述技術(shù)問(wèn)題,本發(fā)明一方面提出了一種程序符號(hào)表的獲取方法,該方法 包括:
      [0007] 提取程序調(diào)試信息中的符號(hào)表信息,將所述符號(hào)表信息保存在符號(hào)表源文件中;
      [0008] 編譯所述符號(hào)表源文件,生成符號(hào)表動(dòng)態(tài)鏈接庫(kù);
      [0009]運(yùn)行程序并加載所述符號(hào)表動(dòng)態(tài)鏈接庫(kù),獲取程序符號(hào)表。
      [0010] 可選地,在所述提取程序調(diào)試信息中的符號(hào)表信息之前,還包括:
      [0011] 構(gòu)造符號(hào)表源文件;
      [0012] 相應(yīng)地,將所述符號(hào)表信息保存在符號(hào)表源文件中,包括:
      [0013] 將所述符號(hào)表信息保存在特定文件中,將所述特定文件中的符號(hào)表信息追加寫入 至符號(hào)表源文件中;
      [0014]其中,保存在特定文件中的符號(hào)表信息包括符號(hào)地址、符號(hào)名稱和符號(hào)類型。
      [0015] 可選地,在將所述符號(hào)表信息保存在符號(hào)表源文件中之前,還包括:
      [0016] 從特定文件中提取所述符號(hào)表信息中的符號(hào)地址和符號(hào)名稱;
      [0017] 相應(yīng)地,保存在符號(hào)表源文件中的符號(hào)表信息為符號(hào)地址和符號(hào)名稱。
      [0018] 可選地,所述運(yùn)行程序并加載所述符號(hào)表動(dòng)態(tài)鏈接庫(kù),獲取程序符號(hào)表包括:
      [0019] 運(yùn)行程序,通過(guò)dlopen函數(shù)加載符號(hào)表動(dòng)態(tài)鏈接庫(kù);
      [0020] 通過(guò)dlsym函數(shù)獲取程序符號(hào)表。
      [0021] 可選地,在所述提取程序調(diào)試信息中的符號(hào)表信息之前,還包括:
      [0022] 在編譯程序時(shí)為CFLAGS添加-g選項(xiàng),自動(dòng)生成包括符號(hào)表信息的調(diào)試信息。
      [0023] 本發(fā)明另一方面提出了一種程序符號(hào)表的獲取系統(tǒng),該系統(tǒng)包括:
      [0024] 符號(hào)表信息保存單元,用于提取程序調(diào)試信息中的符號(hào)表信息,將所述符號(hào)表信 息保存在符號(hào)表源文件中;
      [0025] 動(dòng)態(tài)鏈接庫(kù)生成單元,用于編譯所述符號(hào)表源文件,生成符號(hào)表動(dòng)態(tài)鏈接庫(kù);
      [0026] 程序符號(hào)表獲取單元,用于運(yùn)行程序并加載所述符號(hào)表動(dòng)態(tài)鏈接庫(kù),獲取程序符 號(hào)表。
      [0027] 可選地,該系統(tǒng)還包括:符號(hào)表源文件構(gòu)造單元;
      [0028] 所述符號(hào)表源文件構(gòu)造單元,用于構(gòu)造符號(hào)表源文件;
      [0029]相應(yīng)地,所述符號(hào)表信息保存單元,用于將所述符號(hào)表信息保存在特定文件中,將 所述特定文件中的符號(hào)表信息追加寫入至符號(hào)表源文件中;
      [0030]其中,保存在特定文件中的符號(hào)表信息包括符號(hào)地址、符號(hào)名稱和符號(hào)類型。
      [0031 ]可選地,該系統(tǒng)還包括符號(hào)表信息過(guò)濾單元;
      [0032] 所述符號(hào)表信息過(guò)濾單元,用于從特定文件中提取所述符號(hào)表信息中的符號(hào)地址 和符號(hào)名稱;
      [0033] 相應(yīng)地,保存在符號(hào)表源文件中的符號(hào)表信息為符號(hào)地址和符號(hào)名稱。
      [0034] 本發(fā)明提供的程序符號(hào)表的獲取方法及系統(tǒng),不需要人工搜索獲取符號(hào)表,同時(shí) 不增加程序的空間,有效地解決了現(xiàn)有的程序符號(hào)表的獲取方法導(dǎo)致程序占用較大空間、 獲取效率低的問(wèn)題,節(jié)省了程序運(yùn)行空間,提高了獲取符號(hào)表的效率。
      【附圖說(shuō)明】
      [0035]通過(guò)參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理 解為對(duì)本發(fā)明進(jìn)行任何限制,在附圖中:
      [0036] 圖1示出了本發(fā)明一個(gè)實(shí)施例的程序符號(hào)表的獲取方法的示意圖;
      [0037] 圖2示出了本發(fā)明另一個(gè)實(shí)施例的程序符號(hào)表的獲取系統(tǒng)的結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0038]下面將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述。
      [0039] 圖1是本發(fā)明一個(gè)實(shí)施例的程序符號(hào)表的獲取方法的示意圖。如圖1所示,該程序 符號(hào)表的獲取方法包括:
      [0040] S1:提取程序調(diào)試信息中的符號(hào)表信息,將所述符號(hào)表信息保存在符號(hào)表源文件 中;
      [0041 ] S2:編譯所述符號(hào)表源文件,生成符號(hào)表動(dòng)態(tài)鏈接庫(kù);
      [0042] S3:運(yùn)行程序并加載所述符號(hào)表動(dòng)態(tài)鏈接庫(kù),獲取程序符號(hào)表。
      [0043] 本實(shí)施例的程序符號(hào)表的獲取方法及系統(tǒng),不需要人工搜索獲取符號(hào)表,同時(shí)不 增加程序的空間,有效地解決了現(xiàn)有的程序符號(hào)表的獲取方法導(dǎo)致程序占用較大空間、獲 取效率低的問(wèn)題,節(jié)省了程序運(yùn)行空間,提高了獲取符號(hào)表的效率。
      [0044] 在一種可選的實(shí)施方式中,可選地,在所述提取程序調(diào)試信息中的符號(hào)表信息之 前,還包括:
      [0045] 構(gòu)造符號(hào)表源文件;
      [0046] 相應(yīng)地,將所述符號(hào)表信息保存在符號(hào)表源文件中,包括:
      [0047] 將所述符號(hào)表信息保存在特定文件中,將所述特定文件中的符號(hào)表信息追加寫入 至符號(hào)表源文件中;
      [0048] 其中,保存在特定文件中的符號(hào)表信息包括符號(hào)地址、符號(hào)名稱和符號(hào)類型。
      [0049] 符號(hào)表源文件包含以全局?jǐn)?shù)組形式存在的符號(hào)信息,全局?jǐn)?shù)組的每一項(xiàng)表示一條 符號(hào)信息,該全局?jǐn)?shù)組就是最后使用的程序運(yùn)行符號(hào)表的源代碼。
      [0050] 可選地,在將所述符號(hào)表信息保存在符號(hào)表源文件中之前,還包括:
      [0051] 從特定文件中提取所述符號(hào)表信息中的符號(hào)地址和符號(hào)名稱;
      [0052] 相應(yīng)地,保存在符號(hào)表源文件中的符號(hào)表信息為符號(hào)地址和符號(hào)名稱。
      [0053] 可選地,所述運(yùn)行程序并加載所述符號(hào)表動(dòng)態(tài)鏈接庫(kù),獲取程序符號(hào)表包括:
      [0054]運(yùn)行程序,通過(guò)dlopen函數(shù)加載符號(hào)表動(dòng)態(tài)鏈接庫(kù);
      [0055] 通過(guò)dlsym函數(shù)獲取程序符號(hào)表。
      [0056] 可選地,在所述提取程序調(diào)試信息中的符號(hào)表信息之前,還包括:
      [0057] 在編譯程序時(shí)為CFLAGS添加-g選項(xiàng),自動(dòng)生成包括符號(hào)表信息的調(diào)試信息。
      [0058] 下面以一個(gè)具體的實(shí)施方式為例說(shuō)明本發(fā)明程序符號(hào)表的獲取方法。
      [0059] (1)在編譯程序時(shí)為CFLAGS添加-g選項(xiàng),這樣在編譯過(guò)程中會(huì)自動(dòng)生成包括符號(hào) 表的調(diào)試信息。
      [0060] (2)在程序編譯完成后,通過(guò)命令"nm-n程序名>list.l",將程序的符號(hào)表提取出 來(lái),放到list. 1這個(gè)文件中。
      [0061] (3)此時(shí),list. 1中包含的信息比較多,有一些是不需要的,因此需要對(duì)其進(jìn)行過(guò) 濾。sed-e"/~/d" list. l>list.
      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1