Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

banjomatic

banjomatic banjomatic

Niner since 2011

  • Asynchronous Debugging in Visual Studio 2013

    @brads: Thanks for the update

  • Asynchronous Debugging in Visual Studio 2013

    One more question, probably an expected limitation, but it seems like the "Async Stack" is only 1 async call deep. In other words, calling an async method from within another async method will only show the most recent async call in the call stack. When viewing the context of the "middle" thread, you can still see the first async call that brought you to that point.

    Presumably the debugger should also be able to identify similar cases where you are waiting on another thread/task and combine the upstream callstack as well

    #include <future>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
       auto deferredBreak = []() {
          return std::async(std::launch::async, [](){ ::DebugBreak(); });
       };
    
       // First async call is not visible from Thread2
       // [External] => Thread1 =Async=> Thread2
       // But is from Thread1
       // Main Thread =Async=> Thread1 => [External]
       std::async(std::launch::async, deferredBreak).get().wait();
    
       // Ideal for Thread2 might be:
       // Main Thread =Async> Thread1 =Async=> Thread2
       // And for Thread1:
       // Main Thread =Async> Thread1 =Waiting=> Thread2
       
       return 0;
    }

  • Asynchronous Debugging in Visual Studio 2013

    Answering my own question about C++, it seems like (on Windows 7 anyway) the feature depends at some level on concrt as it works for std::async, but not std::thread (or ::CreateThread)

    #include <future>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
       auto doBreak = [](){ ::DebugBreak(); };
    
       // [External Code] [Async Call] [External Code]
       std::async(std::launch::async, doBreak).wait();
    
       // [External Code] only
       std::thread(doBreak).join();
    
       return 0;
    }

     

    Another note, doesn't [Async Call] kind of imply external code? It would be nice if the 3 lines collapsed down to one if "Show External Code" is unchecked.

    [External Code]
    [Async Call]            =>          [Async Call]
    [External Code]

     

  • Asynchronous Debugging in Visual Studio 2013

    I have mixed feelings about this feature.

    I feel like on the one hand, it is a misleading as each thread's call-stack can now contain frames from multiple threads. Is there any way to surface which thread a given stack frame is running on?

    On the other hand, there may be enough value added by this abstraction to allow for a little deception. At what point does the underlying machinery of message loops and thread pools start to not matter?

    I don't believe the video touched on this, but what is the scope for which the async call-stack improvements are available in C++. Do they work at the Windows thread level, or does it require the use of  PPL Tasks / ConcRT / std::async? 

  • Windows 8 Tips 1: Top 8 Shortcuts

    @YakkoWarner: Alt-F4 still works as far as I know

  • C++ AMP core API introduction... from scratch

    Seems like the start of a good series... I look forward to the higher level classes, there seems to be a wealth of introductory information at this point, but things peak out at matrix multiplication and tiling. It would be nice to see more "real-world" examples. Perhaps a walkthrough of porting one of the sample projects like the n-body one from the serial cpu code to c++ amp and skipping the directcompute step in between?

  • TWC9: 200! Kinect SDK v1.5, GitHub for Windows, Visual Studio 11 lineup and more

    Re: Visual Studio Express, you said that you can still use it on windows 7. While this is true of the previous Express 2010 versions, I don't believe that is true of the Dev11 versions as Win8 development can only be done on the Win8 platform itself.