Search code examples
visual-studio3ddirectxnsightsteam

Using visual studio graphics debugger OR nvidia nsight with steam games


I generally use Intel GPA to profile and analyze the rendering process of games on Steam. I wanted to explore Visual Studio's graphics debugger and Nvidia nSight, but I can't get them to "latch" onto the game's process.

This seems to be because of the way steam games are launched. Clicking on the game.exe launches a steam process that in turn launches the game. I don't know why Valve does it this way, but it prevents these tools from "hooking" onto the process and capturing frames.

I tried using the "steam_appid.txt" file to prevent this launch sequence (the steam API mentions this), but to no avail. Just to clarify - I don't have access to the source of these games; i'm just interested in rendering analysis.


Solution

  • I think Nsight can support "latch" you mentioned. Please configure Nsight's User Settings:

    • Launch external program: $PATH_TO_YOUR_STEAM_EXE
    • Check the check box named "Application is a launcher" [Here is the key]
    • Working directory: $PATH_TO_YOUR_STEAM_WORK_DIR

    Also remember to uncheck the "Synchronize files" in Synchronization section.

    After all configurations have been done, just launch as usual, you will see a Attach dialog box pop out when the steam really runs.

    Just run the game from steam, and double click on the game's process in Nsight's Attach dialog box, then you will see the Nsight HUD in the game and every feature for graphic debug of Nsight should works as normal.

    The key here is tell Nsight that your 'steam.exe' is just a launcher, and Nsight's dll should hook on the children process from steam.exe, which means "hook/attach on your need".

    Thanks An