VirtualBox

儲存庫 vbox 的更動 65375


忽略:
時間撮記:
2017-1-19 下午03:00:19 (8 年 以前)
作者:
vboxsync
訊息:

ValidationKit: Implement support to query some process state on Windows when cdb.exe is available

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/ValidationKit/common/utils.py

    r65335 r65375  
    789789            [ '/usr/bin/pmap', '%u' % (uPid,), ],
    790790        ];
     791    elif sHostOs == 'win':
     792        # There are quite a few possibilities on Windows where to find CDB.
     793        asCdbPathsCheck = [
     794                              'c:\\Program Files\\Debugging Tools for Windows',
     795                              'c:\\Program Files\\Debugging Tools for Windows (x64)',
     796                              'c:\\Program Files\\Debugging Tools for Windows (x86)',
     797                              'c:\\Program Files\\Windows Kits',
     798                              'c:\\Program Files\\Windows Kits (x64)',
     799                              'c:\\Program Files\\Windows Kits (x86)',
     800                              'c:\\Programme\\Debugging Tools for Windows',
     801                              'c:\\Programme\\Debugging Tools for Windows (x64)',
     802                              'c:\\Programme\\Debugging Tools for Windows (x86)',
     803                              'c:\\Programme\\Windows Kits',
     804                              'c:\\Programme\\Windows Kits (x64)',
     805                              'c:\\Programme\\Windows Kits (x86)'
     806                          ];
     807
     808        sWinCdb = 'cdb'; # CDB must be in the path; better than nothing if we can't find anything in the paths above.
     809        for sPath in asCdbPathsCheck:
     810            fFound = False;
     811            try:
     812                for sDirPath, _, asFiles in os.walk(sPath):
     813                    if 'cdb.exe' in asFiles:
     814                        sWinCdb = os.path.join(sDirPath, 'cdb.exe');
     815                        fFound = True;
     816                        break;
     817            except:
     818                pass;
     819
     820            if fFound:
     821                break;
     822
     823        #
     824        # The commands used to gather the information are quite cryptic so they are explained
     825        # below:
     826        #     ~* f    -> Freeze all threads
     827        #     ~* k    -> Acquire stack traces for all threads
     828        #     lm -v   -> List of loaded modules, verbose
     829        #     ~* u    -> Unfreeze all threads
     830        #     .detach -> Detach from target process
     831        #     q       -> Quit CDB
     832        #
     833        aasCmd = [sWinCdb, '-p', '%u' % (uPid,), '-c', '~* f; ~* k; lm -v; ~* u; .detach; q'];
    791834    else:
    792835        aasCmd = [];
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette