| These files are related to the symbol and source server. |
| |
| To test changes to source_index.py you can use the following steps, adjusted to |
| the specific circumstances: |
| |
| 1) Build some binary, such as base_unittests.exe |
| 2) Optionally modify the script to insert a break after the first |
| print("Still working, %d / %d files have been processed." since otherwise the |
| script may take a long time to run. |
| 3) Copy the PDB (must still be in the output directory) to allow repeated |
| testing without rebuilding. |
| 4) Make sure that you have origin/main checked out when testing because the |
| current commit hash will be embedded into the PDB and it must be a landed commit |
| or else the source-code retrieval will work. |
| 5) Run the script using a command similar to this: |
| vpython3 source_index.py out\release\base_unittests.exe.pdb --build-dir=out\release --toolchain-dir=third_party\depot_tools\win_toolchain\vs_files\3bda71a11e |
| 6) Rename the base directory so that the debugger cannot find its source files |
| so that it is forced to use source indexing. |
| ren base foo |
| 7) Make sure source-server is enabled in your debugger, and optionally enable |
| verbose diagnostics. I used Visual Studio. |
| 8) Debug base_unittests.exe. Step in to start debugging. Ideally the |
| source-server command to be executed will be shown), but that depends on your |
| debugger settings. A typical command would be: |
| cmd /c "mkdir "C:\Users\BRUCED~1\AppData\Local\SOURCE~1\base\test\run_all_unittests.cc\91280017b199c3d37c7ef48683cfae9c8371342b" & python3 -c "import urllib.request, base64;url = \"https://chromium.googlesource.com/chromium/src.git/+/91280017b199c3d37c7ef48683cfae9c8371342b/base/test/run_all_unittests.cc?format=TEXT\";u = urllib.request.urlopen(url);open(r\"C:\Users\BRUCED~1\AppData\Local\SOURCE~1\base\test\run_all_unittests.cc\91280017b199c3d37c7ef48683cfae9c8371342b\run_all_unittests.cc\", \"wb\").write(base64.b64decode(u.read()))" |
| You can manually run this command to confirm that it works. |
| 9) After the debugger runs the source-server command it will have downloaded a |
| file and will display it. It should be in a path similar to this one: |
| C:\Users\brucedawson\AppData\Local\SourceServer\base\test\run_all_unittests.cc\91280017b199c3d37c7ef48683cfae9c8371342b\run_all_unittests.cc |
| 10) You can manually inspect the results and look for unexpected changes by |
| using this command: |
| |
| pdbstr -r -p:test.pdb -s:srcsrv >results.txt |
| |
| pdbstr can be found in this directory: |
| |
| C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\srcsrv |
| |
| In Chrome official builds this script is invoked in the official symbols step by |
| recipes\recipe_modules\chrome\resources\official_utils.py |
| which calls UpdatePDB. official_utils.py is found in |
| https://chrome-internal.googlesource.com/chrome/tools/release/scripts |