[發(fā)明專利]信息處理方法及裝置、存儲介質和處理器有效
| 申請?zhí)枺?/td> | 201910100240.1 | 申請日: | 2019-01-31 |
| 公開(公告)號: | CN111506491B | 公開(公告)日: | 2023-05-02 |
| 發(fā)明(設計)人: | 趙樹起 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F8/41;G06F16/22 |
| 代理公司: | 北京博浩百睿知識產權代理有限責任公司 11134 | 代理人: | 謝湘寧;張文華 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 信息處理 方法 裝置 存儲 介質 處理器 | ||
本發(fā)明公開了一種信息處理方法及裝置、存儲介質和處理器。其中,該方法包括:編譯源代碼,將編譯出的符號表存儲至符號數據庫中,其中,符號表用于記錄源代碼與源代碼對應的程序之間的調試信息;基于符號表在符號數據庫中的位置信息,確定符號表的索引信息;基于編譯后生成的目標碼和符號表的索引信息生成程序的發(fā)布文件。本發(fā)明解決了相關技術中對源代碼編譯時產生的目標碼中攜帶冗余的調試信息的技術問題。
技術領域
本發(fā)明涉及計算機技術領域,具體而言,涉及一種信息處理方法及裝置、存儲介質和處理器。
背景技術
目前,在開發(fā)應用軟件后,需要對應用軟件進行編譯調試,例如,對于應用程序段錯誤等問題,通常編譯是帶符號。正常的帶符號編譯中,調試符號會和目標碼存在一起,從而有可能帶來符號表的冗余。比如一個CPP文件包含了多個頭文件,每個頭文件的調試信息會存在多個目標碼中。另外在鏈接階段會放大這種冗余,比如同一個庫可能存在于多個程序中,每個程序有調試符號的完整拷貝。這就導致了以下兩個問題:第一,編譯時的問題,很多文件在編譯時為了更完善的代碼測試,尤其是基礎庫文件,被包含在多個程序甚至每個最終程序中,這就導致了符號表中大量的重復數據,比如符號和文件的對應關系等。通過分析一些程序,發(fā)現(xiàn)包含符號和去掉符號的文件大小相差10倍。第二,發(fā)布問題,在目標碼發(fā)布的過程中容易因為發(fā)布包太大造成發(fā)布失敗的問題。為了回避這個問題,相關技術中通常把符號全部去掉。但是release倉庫中還是存儲了全量程序內容。在每個項目文件被頻繁調用時,需要為此付出了大量額外的存儲成本。
為了解決這個問題,相關技術中提出了兩個解決方案:第一,編譯的時候不產生符號表,關閉編譯器產生符號表的選項,以避免符號表影響程序大小。但是帶來的問題是調試程序復雜度極高,當程序出現(xiàn)異常,比如應用程序段錯誤,將無法進行正常調試。第二,編譯后符號和程序分離,程序在編譯過程中會生成相應的符號信息,但是在最終的發(fā)布版中,被分離的符號信息不發(fā)布。為了達成這個目標,Linux和Wind?ows采取了類似的方法:Linux在編譯期間,將符號和目標碼存在放一起,然后分離符號表和程序,但編譯期間重復符號的問題沒有解決,并且符號表雖然沒有發(fā)布,但是為了調查問題也需要保留,依然占用了存儲資源。Windows的方案是為每個可執(zhí)行文件創(chuàng)建一個單獨的PDB(program?database)文件,在PDB文件中記錄了一些調試信息,但多個可執(zhí)行文件存在相同符號表的問題沒有解決,依然消耗了存儲資源。
針對上述的問題,目前尚未提出有效的解決方案。
發(fā)明內容
本發(fā)明實施例提供了一種信息處理方法及裝置、存儲介質和處理器,以至少解決相關技術中對源代碼編譯時產生的目標碼中攜帶冗余的調試信息的技術問題。
根據本發(fā)明實施例的一個方面,提供了一種信息處理方法,包括:編譯源代碼,將編譯出的符號表存儲至符號數據庫中,其中,所述符號表用于記錄所述源代碼與所述源代碼對應的程序之間的調試信息;基于所述符號表在所述符號數據庫中的位置信息,確定所述符號表的索引信息;基于編譯后生成的目標碼和所述符號表的索引信息生成所述程序的發(fā)布文件。
進一步地,將編譯出的符號表存儲至符號數據庫中包括:將編譯出的符號表存儲至符號數據庫中包括:判斷所述調試信息在所述符號數據庫中是否存在;若所述符號數據庫中存在所述調試信息中的目標信息,則對所述調試信息中的目標信息進行去重處理;將去重處理后的調試信息存儲至所述符號數據庫中。
進一步地,對所述調試信息中的目標信息進行去重處理包括:確定所述調試信息中的目標信息在所述符號數據庫中的索引信息;在所述符號表中采用所述目標信息的索引信息替代所述目標信息;將替代后的所述符號表中的調試信息作為去重處理后的調試信息。
進一步地,所述方法還包括:在基于編譯后生成的目標碼和所述符號表的索引信息生成所述程序的發(fā)布文件之后,通過所述符號表的索引信息從所述符號數據庫中獲取所述程序對應的調試信息;基于獲取到的調試信息重構所述符號表;采用重構后的符號表,對所述程序進行調試。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910100240.1/2.html,轉載請聲明來源鉆瓜專利網。





