將符號檔載入符號處理程式之後,應用程式可以使用符號定位器函式傳回指定位址的符號資訊。 這些函式也可以找到位址所對應的原始程式碼檔案名稱和行號位置。
列舉符號檔
若要擷取模組名稱載入的所有符號檔清單,請呼叫 SymEnumerateModules64 函式。 如需範例,請參閱 列舉符號模組。 若要擷取指定模組的符號清單,請呼叫 SymEnumSymbols 函式。 如需範例,請參閱 列舉符號。
依位址擷取符號
若要擷取特定位址的符號資訊,請使用 SymFromAddr 函式。 此函式會擷取資訊,並將其儲存在 SYMBOL_INFO 結構中。 因為符號名稱長度是可變的,因此您必須在結構宣告 SYMBOL_INFO 之後提供額外的緩衝區空間。 如需範例,請參閱 根據位址提取符號資訊。
請注意,位址不需要位於符號界限上。 如果位址是在符號開頭之後,但在符號結尾之前(符號開頭加上符號大小),函式會找出符號。
依符號名稱擷取符號
若要擷取特定模組和符號名稱之 SYMBOL_INFO 結構中的符號資訊,請使用 SymFromName 函式。 如果已設定延後符號載入,SymFromName 將會嘗試載入尚未載入的模組的符號檔。 若要指定模組名稱以及符號名稱,請使用模組 模組語法!SymName。 “!” 字元會從符號名稱分隔模組名稱。 如需範例,請參閱 根據名稱擷取符號資訊。
依位址擷取行號
若要擷取特定位址的原始程式碼位置,請使用 SymGetLineFromAddr64 函式。 此函式會填入 IMAGEHLP_LINE64 結構,其中包含指定地址所參考的來源檔名和行號位置。 如需範例,請參閱 根據位址擷取符號資訊。
透過符號名稱檢索行號
若要擷取特定符號名稱的原始程式碼位置,請使用 SymGetLineFromName64 函式。 此函式類似於 SymGetSymFromName64,但會擷取 IMAGEHLP_LINE64 結構。 若要使用 SymGetLineFromAddr64 或 SymGetLineFromName64,您必須使用 SymSetOptions 函式來設定載入行選項 (SYMOPT_LOAD_LINES)。 如需範例,請參閱 依名稱擷取符號資訊。