locked
Registering a debug engine using pkgdef? RRS feed

  • Question

  • Is it possible to register a debug engine using the pkgdef system?  I'm running Win 7 64bit, which (I believe) requires that the debug engine registry keys be placed in the Wow6432Node registry key.  I'm attempting to register it using the pkgdef file which is populated by attributes I've placed on my classes, but the pkgdef file after compilation only refers to $RootKey$, which, when installing, does NOT expand out to a location under the Wow6432Node tree.  It's also possible that I'm doing something else wrong and am not registering it correctly, so I'm including my pkgdef file below.

     

    With what I've registered here, assuming it's registered correctly, I should be able to open the Attach to Process window and see my port supplier listed in the Transport dropbox, right?

     

    Here's my pkgdef file, in its entirety:

     

    [$RootKey$\InstalledProducts\DCDebuggerPackage]
    @="#110"
    "Package"="{6953d438-47ff-4a91-b3ef-93c96668785c}"
    "PID"="1.0"
    "ProductDetails"="#111"
    "LogoID"="#400"
    [$RootKey$\Packages\{6953d438-47ff-4a91-b3ef-93c96668785c}]
    @="NaughtyDog.DCDebugger.DCDebuggerPackage, DCDebugger, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32e27ffa3300edca"
    "InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
    "Class"="NaughtyDog.DCDebugger.DCDebuggerPackage"
    "CodeBase"="$PackageFolder$\DCDebugger.dll"
    [$RootKey$\CLSID\{b3d4e1a6-eeed-4314-8958-2a917c7358fd}]
    @="NaughtyDog.DCDebugger.DCProgramProvider"
    "InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
    "Class"="NaughtyDog.DCDebugger.DCProgramProvider"
    "CodeBase"="$PackageFolder$\DCDebugger.dll"
    "ThreadingModel"="Both"
    [$RootKey$\CLSID\{37047191-1616-4a69-ae35-9c0a8b450025}]
    @="NaughtyDog.DCDebugger.DCDebugEngine"
    "InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
    "Class"="NaughtyDog.DCDebugger.DCDebugEngine"
    "CodeBase"="$PackageFolder$\DCDebugger.dll"
    "Assembly"="DCDebugger, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32e27ffa3300edca"
    [$RootKey$\AD7Metrics\Engine\{d8ad06e8-2dbd-4500-b84c-ab2fe71e7f13}]
    @="NaughtyDog.DCDebugger.DCDebuggerPackage, DCDebugger, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32e27ffa3300edca"
    "CLSID"="{37047191-1616-4a69-ae35-9c0a8b450025}"
    "Name"="DC Debug Engine"
    "AlwaysLoadLocal"=dword:00000001
    "ProgramProvider"="{b3d4e1a6-eeed-4314-8958-2a917c7358fd}"
    "RemoteDebugging"=dword:00000001
    "Attach"=dword:00000001
    "PortSupplier"="{75a85e79-63e6-493a-b42d-3ee570697423}"
    "AutoSelectPriority"=dword:00000028
    [$RootKey$\AD7Metrics\Engine\{d8ad06e8-2dbd-4500-b84c-ab2fe71e7f13}\IncompatibleList]
    "0"="{449ec4cc-30d2-4032-9256-ee18eb41b62b}"
    "1"="{f200a7e7-dea5-11d0-b854-00a0244a1de2}"
    "2"="{92ef0900-2251-11d2-b72e-0000f87572ef}"
    [$RootKey$\CLSID\{75a85e79-63e6-493a-b42d-3ee570697423}]
    @="NaughtyDog.DCDebugger.DECIPortSupplier"
    "InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
    "Class"="NaughtyDog.DCDebugger.DECIPortSupplier"
    "CodeBase"="$PackageFolder$\DCDebugger.dll"
    "Assembly"="DCDebugger, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32e27ffa3300edca"
    [$RootKey$\AD7Metrics\PortSupplier\de851b06-9959-4400-8b50-7e31bfb71efd]
    @="NaughtyDog.DCDebugger.DCDebuggerPackage, DCDebugger, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32e27ffa3300edca"
    "CLSID"="{75a85e79-63e6-493a-b42d-3ee570697423}"
    "Name"="DECI Port Supplier"
    
    

     

     

    When (attempting) testing this, I'm just launching Visual Studio 2010 in the experimental instance mode and opening the Attach to Process window once it starts up.  None of my classes are instantiated and Initialize() is not called on my package class.

    Thanks in advance for any help with this!  And if it's NOT possible to register the debug engine correctly what is the correct way to register it?

     - Dylan

     


    • Edited by Dylan Barrie Saturday, December 10, 2011 8:13 AM
    Saturday, December 10, 2011 8:11 AM

Answers

  • I do not believe pkgdef can register anywhere except HKCU and the debug engines need to be registered under HKLM iirc.  As for 'why the difference', well they are owned by different teams and have historically been registered in different reg hives for whatever reason (I am sure there was a motivating reason originally, but I don't know anything about the debugger extensibility). 

    There is a debugger forum (here) where debugger team members/experts are more likely to be, asking debuger specific extensibility questions there is likely to yield more satisfactory answers.

    Ryan

    • Marked as answer by Dylan Barrie Monday, December 12, 2011 4:42 AM
    Sunday, December 11, 2011 7:02 PM

All replies

  • As an additional followup question, why is it (if this is the case) that debug engines can't be registered the same way language services are registered?
    Saturday, December 10, 2011 8:20 AM
  • I do not believe pkgdef can register anywhere except HKCU and the debug engines need to be registered under HKLM iirc.  As for 'why the difference', well they are owned by different teams and have historically been registered in different reg hives for whatever reason (I am sure there was a motivating reason originally, but I don't know anything about the debugger extensibility). 

    There is a debugger forum (here) where debugger team members/experts are more likely to be, asking debuger specific extensibility questions there is likely to yield more satisfactory answers.

    Ryan

    • Marked as answer by Dylan Barrie Monday, December 12, 2011 4:42 AM
    Sunday, December 11, 2011 7:02 PM
  • Thanks Ryan.  I've re-asked my question on the debugger forum.  I'm marking your post as Answer due to the 'why the difference' response.

     

    Thanks again!

     - Dylan

    Monday, December 12, 2011 4:41 AM
  • None of my classes are instantiated and Initialize() is not called on my package class.

    Dylan, maybe you found your answer since then but this may be because you did not add the "ProvideAutoLoad" attribute as described here : http://dotneteers.net/blogs/divedeeper/archive/2008/03/23/LVNSideBar1.aspx

    - Remi.


    speps

    Saturday, April 14, 2012 2:01 PM