CLR Debugging API

Leave a comment

So in some advanced debugging situation, we have to write code to reflect the current managed variables and stacktrace.

John, Robbins mentioned in <Debugging with .Net 2.0 Application> as follow:

That’s really extremely excellent!!!


Windows 8 Programming Summary

Leave a comment

As you know, Microsoft release Windows 8 recently. As MSDN Subscriber, you can download the windows 8 developer preview  and install the virtual system[see my previous post about installation of windows 8 on virtualbox].

Basically, windows 8 is really a kind of COM “reimagined” [cited from Matt,Merry’s speech], and Microsoft try to build cross-language[sure ,Application development language in User application space] based on Windows Platform, instead of something tried with MSIL  in virtual system.

For Application developer, the world seems turn back to 10 year ago, when we still keep love with COM[Still remember IUnknown, Dispatcher, the amazing API QueryInterface, and Thread Apartment, etc… Win32 Dll…].

Actually not yet, refer to description. Now windows application consists of :

  • Metro Application – I’d like to call it Metro Style Applicaiton [I like Raf’s idiom, just a kind of new working style for windows application. The kernel of application still is dispatched to IPC, etc]
  • Classic Desktop Application – tradional windows application style

The core of User space application has been totally changed into COM with metadata. Take Metro application as example, wmahost as service host to invoke DCOM object and generate application with its own resource based on platform API.

As metadata built on platform[not depends on virtual system], the runtime performance has the possibilities to enhance a lot, esp. for language out-of-virtual system. We say, c++ is back, King is back.[I questioned that C++ Extension is a kind of something like Objective-c, similiar].

Please check up with Raf’s description, great*N post, if you want to know the story behind, not satisfy to just work it out.

And if you have time, please check up with Matt’s speech on windows 8 build, great speech.

Thing come back, What do you need to do here for real development preparation? [Perhaps, just take a note for what I have done here.]

  1. Metro application Guide –
  2. However, if you try to do something with IPackageDebugSettings [win32 API] to enable debug or something different from standard metadata definition of platform COM, you have to install Visual Studio 11 Ultimate developer preview to support both Metro and Desktop application.

By the way, VS2011 Ultimate depends on some components, which are included inside VS2010.[strange ^_^, that’s why it’s pre-developer version]. So take care of that, in case you meet with installation error.

The simplest solution is to install VS2011 side with VS2010, However, the final solution is to check up with installation error, and install missing component separately.

OK, ready, go to Metro application:

  1. – Metro application sample, for Application developer, it’s sufficient.
  2. – Windows 8 team blog
  3. My favoriate – Metro COM Programming interface, amazing!!! you can do a lot of things, Just as Matt has bee done in amazing and awesome details, I like it, that’s the real world looks like.

Though just a kind of links and video on channel 9, it’s already a great changes.

So basically for Metro/Desktop application in windows 8 , if you just use the standard platform/C# API, it’s cross-language. based on metaCOM, you can do things you like.

However, for me, the powerful application in windows 8 application, will look like what Raf has done for DebugEnabler[]. Mix-c++ language programming [Guy, just c++, why mixed?], to bind Windows Platform COM interfaces, STL, WRL together.

And as Charle posted in GoNative9++ facebook, COM interop die! The only thing here is C++ [precisely, C++ Extension, and Portable], Just check up with Herb’s speech in Windows 8 Build conference.

Now C++ world become Clean, Safe, and Fluent. Hmmm, as developer, I don’t want to be lazy, and c++ is a way to keep me.