none
Debugging 32-bit ActiveX control with Visual Studio 2008 and IE 10

    Question

  • I am unable to hit breakpoints while debugging my 32-bit ActiveX control using Visual Studio 2008 when running with IE 10.

    After thorough research, I've learned that IE 10 will only run in 32-bit mode when HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth is set to a non-zero value.  This enables me to run the 32-bit ActiveX control.  However, this also disables the ability to hit breakpoints when debugging with Visual Studio, because in order to debug with breakpoints, this value must be zero.  As stated in other questions/responses: "For debugging purposes, you may find it helpful to set HKCU\Software\Microsoft\Internet Explorer\Main\TabProcGrowth = 0 (DWORD).  This will disable process separation in IE."

    This creates a catch-22 scenario, because in order to debug, TabProcGrowth must be zero, but in order to get IE 10 to run in 32-bit mode, TabProcGrowth must be non-zero.

    Any suggestions for what I might do?

    Thanks in advance.


    Wednesday, July 24, 2013 12:49 PM

All replies

  • Hello,

    Since IE is a multiple tab browser, when we opened multiple instances of IE and attempt to debug your project, we mostly will have the issue where VS debugger just stops and ignores your break points! For that, we usually suggest user to set TabProcGrowth to 0 in webconfig to enable the Visual Studio dubug runs.
    however, in your scenario, we can not change it to make sure the 32bit ActiveX control run. For that, I would like to suggest you close all your IE browser and then run vs debug, so that only one IE tab appears and vs debug can know which proecess to detect.
    Another method is try to open the protect mode, For details please check the following article
    http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx

    Hope this helps, thanks.


    Yanping Wang
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Thursday, July 25, 2013 8:08 AM
    Moderator
  • Yanping:

    Thank you very much for your reply!

    I wanted to mention that if I run with Enhanced Protected Mode, this makes IE use 64-bit processes, not 32-bit, so I cannot debug a 32-bit ActiveX control with this selected.

    I did however figure out what I needed to do, thanks to one of your suggestions.

    The steps are:

    1. Make sure TabProcGrowth is not 0, and Enhanced Protection Mode is not selected.

    2. Start IE 10; this creates 2 processes, one 64-bit, one 32-bit.

    3. In Visual Studio, select Debug -> Attach to Process.

    4. In the Attach to Process dialog, select "Native Code" in the "Attach to" selection box.

    5. In the Available Processes list, select the iexplore.exe which is of the Type "Script, x86".

    6. Voila, the debugger attaches to the 32-bit process, and I am able to get breakpoints in my C++ ActiveX code.

    Thanks again for your prompt and informative response!


    Thursday, July 25, 2013 1:25 PM