How do I attach Visual Studio to a process that is not started yet?

前端 未结 8 1153
不思量自难忘°
不思量自难忘° 2020-12-02 07:41

I have .NET program that can\'t be run from Visual Studio for some reasons (Excel file created from an Excel 2010 template project) for which I need to debug startup events.

相关标签:
8条回答
  • 2020-12-02 08:15

    One little solution that might suit many people.

    • in the first line of code that the exe will run, add this command

      System.Threading.Thread.Sleep(20000)

    That will make the exe sleep for 20 seconds before it starts processing anything. Then you have 20 seconds to attach to the process, which can be done quickly with ctrl+alt+p, then find the process, then enter to attach.

    Not much of an answer but worked a treat for me :--)

    0 讨论(0)
  • 2020-12-02 08:18

    I found this answer when I was looking for something similar. In my case, I couldn't simply use the executable as my project's startup program because it needed to be started in a very specific environment that I couldn't reproduce easily (namly: started from cygwin).

    I took a look at the Reattach Extension as suggested by mrstrange and also the very similar Attach To Anything extension... but my executable seemed to close too quickly for the extensions to notify and attach.

    What finally helped me was this: https://stackoverflow.com/a/4042545/1560865, which references the MSDN article How to: Launch the Debugger Automatically, which in-turn lists the following steps:

    1. Start the Registry Editor (regedit).
    2. In the Registry Editor, open the HKEY_LOCAL_MACHINE folder.
    3. Navigate to HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image file execution options.
    4. In the Image File Execution Options folder, locate the name of the application you want to debug, such as myapp.exe. If you cannot find the application you want to debug:
      a. Right-click the Image File Execution Options folder, and on the shortcut menu, click New Key.
      b. Right-click the new key, and on the shortcut menu, click Rename. c. Edit the key name to the name of your application; myapp.exe, in this example.
    5. Right-click the myapp.exe folder, and on the shortcut menu, click New String Value.
    6. Right-click the new string value, and on the shortcut menu, click Rename.
    7. Change the name to debugger.
    8. Right-click the new string value, and on the shortcut menu, click Modify. The Edit String dialog box appears.
    9. In the Value data box, type vsjitdebugger.exe.
    10. Click OK.
    11. From the Registry menu, click Exit.
    12. The directory containing vsjitdebugger.exe must be in your system path. To add it to the system path, follow these steps:
      a. Open the Control Panel in Classic view, and double-click System.
      b. Click Advanced System Settings.
      c. In System Properties, click the Advanced tab.
      d. On the Advanced tab, click Environment Variables.
      e. In the Environment Variables dialog box, under System variables, select Path, then click the Edit button.
      f. In the Edit System Variable dialog box, add the directory to the Variable value box. Use a semicolon to separate it from other entries in the list.
      g. Click OK to close the Edit System Variable dialog box.
      h. Click OK to close the Environment Variables dialog box.
      i. Click OK to close the System Properties dialog box.
    13. Now, use any method to start your application. Visual Studio will start and load the application.

    Hope that this helps anyone else in the future!

    0 讨论(0)
提交回复
热议问题