I attached a log for a debug session of a sample D debuggee. You can use that as a reference for seeing where LaunchDebugTargets is supposed to end up in the debug engine.

With respect to loading an executable as a project and having a few problems... Were you using Windows XP? I saw those things happen on a friend's Windows XP machine and VS 2005. I haven't been able to debug on that machine, and I haven't been able to figure it out by reviewing the code. I run Vista 64-bit.

I'll fix the add-in. That was a blunder from a last minute change in order to check in the code into the dsource depot.

I'll take a look at the VS SDK build dependency. Do you mean including in the Mago tree the needed headers and libraries from the SDK? I'll have to check what the redistribution conditions are. Another thing I need to fix right away are those embarrassing warnings in EED.

Thanks a lot for the feedback and investigating, Rainer.
  Aldo

On Mon, 23 Aug 2010 00:26:12 -0700, Rainer Schuetze <r.sagita...@gmx.de> wrote:
This is really impressive work.

I gave it a try, compilation worked fine with a few hickups (mainly due to taking some random (almost compatible) stdint.h/inttypes.h and placing it into mago/include, so a few projects needed to have an additional include search path).

Still, I think it is a bit troublesome for people to build MaGo from source if they are not used to work with the Visual Studio Extensibility, so you should consider providing some precompiled binaries.

There is an installation issue with the addin: MagoDELauncher.Addin declares utf-16 encoding, but it looks more like utf-8. Without changing that, Visual Studio 2008 rejects the addin for me.

Integration with Visual D is not working yet. I changed the debugger GUID, it loads the mago debug engine DLLs, but it returns an error. If you can give me a hint where IVsDebugger::LaunchDebugTargets ends up in the engine, I can investigate further...

Trying the Launch addin, the Visual D projects are listed with empty names (I fixed this), but cannot be launched (no OutputGroups from Visual D, I guess I need to fix that, too).

Loading an executable as a project and launching it with the addin works fine, but I had no luck setting breakpoints. Using "asm { int3; }" activates the debugger and shows shows correct source code association. Unfortunately the local variables are listed without name and values, only the icon.

Looking forward to getting these issues resolved,
Rainer


Aldo Nunez wrote:
I've checked in Mago Debugger -- a set of libraries and a Visual Studio plug-in for debugging D 2 programs on Windows.
 You can find it at:
  http://dsource.org/projects/mago_debugger
 Here's a quick set of features:
   * Starting and stopping a debug session
  * Source level step-in, step-over, and step-out
  * Breakpoints by source line
  * Module and thread views
  * Callstack
  * Memory and Register views
  * Locals view
  * Watch views
  * Disassembly
It uses the CodeView debug info that DMD puts in exes, not the PDB format. But, I do want to support PDB format so that you can step into Microsoft C and C++ code from your D code. It doesn't have a command line interface, but I encourage you to make one that can be included with this project. Try it out and take a look at the source code. I'd like to hear your feedback and see your bug reports.



--
Using Opera's revolutionary email client: http://www.opera.com/mail/
[4600] Engine::FinalConstruct
[4600] Engine::LaunchSuspended
[4600] Engine::EnsurePollThreadRunning
[4600] Engine::LaunchSuspendedInternal
[4600] Engine::ShutdownIfNeeded
[4600] Engine::ResumeProcess
[4600] Engine::ResumeProcessInternal
[4600] Engine::FindProgram
[4600] Engine::Attach
[4600] Engine::FindProgram
[4600] Engine::ShutdownIfNeeded
[4600] CREATE_PROCESS_DEBUG_EVENT (3) : PID=7656, TID=7516
[4600] Engine::GetEngineId
[4600] EventCallback::OnProcessStart
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] EventCallback::OnThreadStart
[4600] Engine::FindProgram
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] Engine::CreatePendingBreakpoint
[4600] Engine::ForeachProgram
[4600] Engine::AddPendingBP
[4600] UNLOAD_DLL_DEBUG_EVENT (7) : PID=7656, TID=7516
[4600] EventCallback::OnModuleUnload
[4600] Engine::FindProgram
[4600] UNLOAD_DLL_DEBUG_EVENT (7) : PID=7656, TID=7516
[4600] EventCallback::OnModuleUnload
[4600] Engine::FindProgram
[4600] UNLOAD_DLL_DEBUG_EVENT (7) : PID=7656, TID=7516
[4600] EventCallback::OnModuleUnload
[4600] Engine::FindProgram
[4600] UNLOAD_DLL_DEBUG_EVENT (7) : PID=7656, TID=7516
[4600] EventCallback::OnModuleUnload
[4600] Engine::FindProgram
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] EXCEPTION_DEBUG_EVENT (1) : PID=7656, TID=7516, exc=80000003 at 77A80004
[4600] EventCallback::OnLoadComplete
[4600] Engine::FindProgram
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] CREATE_THREAD_DEBUG_EVENT (2) : PID=7656, TID=7524
[4600] EventCallback::OnThreadStart
[4600] Engine::FindProgram
[4600] LOAD_DLL_DEBUG_EVENT (6) : PID=7656, TID=7516
[4600] EventCallback::OnModuleLoad
[4600] Engine::FindProgram
[4600] Engine::BindPendingBPsToModule
[4600] EXCEPTION_DEBUG_EVENT (1) : PID=7656, TID=7516, exc=80000003 at 004020AF
[4600] EventCallback::OnBreakpoint
[4600] Engine::FindProgram
[4600] Thread::BuildCallstack
[4600] StackFrame::EnumProperties
[4600] StackFrame::GetDebugProperty
[4600] EnumX86Registers
[4600] StackFrame::GetExpressionContext
[4600] ExprContext::ParseText
[4600] Expr::EvaluateSync
[4600] Property::GetMemoryContext
[4600] StackFrame::EnumProperties
[4600] StackFrame::GetDebugProperty
[4600] StackFrame::GetDebugProperty

---
Stopped at a breakpoint at the top of main
Then we continue and let the process end
---

[4600] EXCEPTION_DEBUG_EVENT (1) : PID=7656, TID=7516, exc=80000004 at 004020B4
[4600] EXIT_THREAD_DEBUG_EVENT (4) : PID=7656, TID=7524
[4600] EventCallback::OnThreadExit
[4600] Engine::FindProgram
[4600] EXIT_PROCESS_DEBUG_EVENT (5) : PID=7656, TID=7516
[4600] EventCallback::OnProcessExit
[4600] Engine::FindProgram
[4600] Engine::DeleteProgram
[4600] Engine::OnPendingBPDelete
[4600] Engine::ContinueFromSynchronousEvent
[4600] Engine::ShutdownIfNeeded
[4600] Poll loop shutting down.

Reply via email to