[Openmcl-devel] Debugging in Kernel in Windows vista 32 bit

Seth seth at tewebs.com
Sun Dec 20 10:28:26 PST 2009


Im trying to port the RDNZL library to clozure. 
However the code throws me in the low level debugger. I have wrote some test code
that actually works and then i have intentionally put an error in so i know the
error source. Now i would like to verify the source of error, assuming i didn't
know it, by somehow detecting the error thrown in the c function. Of course the
goal is to figure out why the test code i want doesn't work.

Just for an idea, this is the c++ code:

__declspec(dllexport) void* invokeStaticMember(const __wchar_t *methodName, void
*type, int nargs, void *args[]) {
		Type ^t = safe_cast<Type ^>(static_cast<DotNetContainer
*>(type)->getContainerObject());
                return InvokeMember::invokeMethod(nullptr, t, methodName, nargs,
args, static_cast<BindingFlags>              
                                                           (BindingFlags::Static
| BindingFlags::Public));
}

	
And this is my working test code:
(in-package :rdnzl)

(defun %invoke-instance-member (method-name type nargs args)
  (ccl::with-native-utf-16-cstr (mn method-name)
    (ccl:external-call "invokeInstanceMember"
      :address mn :address type :signed-int nargs
      :address args :address)))

 
(defun test-invoke-2 ()
   (let ((obj (make-type-from-name "System.Reflection.Assembly")))
     (%invoke-instance-member "ToString" (pointer obj) 0 (ccl::%null-ptr))))


I introduce the error by chaing ToString to TToString. 
I would somehow like to 'catch' the error in the precompiled dll to see what
error is thrown . All that the kernel tells me
is that an "Exception occured while executing foreign code".

Can anyone suggest a good way to do this? Thanks!


Also, as a side note, is there any way to prevent clozure going into this kernel
by catching the error?

---- Msg sent via WebMail



More information about the Openmcl-devel mailing list