View previous topic :: View next topic |
Author |
Message |
TEHb
Joined: 15 Jul 2009 Posts: 3
|
Posted: Wed Jul 15, 2009 9:42 am Post subject: DMC EXE failed |
|
|
Hello,
At first it is just brilliant program! It helps a lot in my development.
But when I tried to process our large project it fails with message "unsupported field entry". I've found it does not support processing of the LF_FRIENDFCN_V1 field list (0x0404).
Is it possible to add support for this feature?
Thanks a lot!
Andrew. |
|
Back to top |
|
|
sagitario
Joined: 03 Mar 2007 Posts: 292
|
Posted: Thu Jul 16, 2009 12:04 am Post subject: |
|
|
Hi,
thanks for the feedback.
The LF_FRIENDFCN field is generated for friend functions of a struct/class, but I don't see any use for it in the debugger. So I have added some code to simply remove this entry:
Code: | // throw away friend function declarations, there is no v3 replacement and the debugger won't need them
case LF_FRIENDFCN_V1:
pos += sizeof(fieldtype->friendfcn_v1) + fieldtype->friendfcn_v1.p_name.namelen - 1;
continue;
case LF_FRIENDFCN_V2:
pos += sizeof(fieldtype->friendfcn_v2) + fieldtype->friendfcn_v2.p_name.namelen - 1;
continue;
default:
setError("unsupported field entry");
break;
|
It is also committed to the svn-repository, but I have not yet made a new version.
I hope this helps,
Rainer |
|
Back to top |
|
|
TEHb
Joined: 15 Jul 2009 Posts: 3
|
Posted: Thu Jul 16, 2009 2:33 am Post subject: |
|
|
Hi,
That's great thanks!
And you'll need to skip friend class definition as well:
Code: | case LF_FRIENDCLS_V1:
pos += sizeof(fieldtype->friendcls_v1);
continue;
case LF_FRIENDCLS_V2:
pos += sizeof(fieldtype->friendcls_v2);
continue;
|
I am going to use this converter for debugging our application as CodeView debugging in VS2005 and later doesn't work at all.
Cheers!
Andrew. |
|
Back to top |
|
|
TEHb
Joined: 15 Jul 2009 Posts: 3
|
Posted: Thu Jul 16, 2009 4:01 am Post subject: |
|
|
And another thing. Don't know should it skip LF_VBCLASS_V1 or process it:
Code: | case LF_VBCLASS_V1:
case LF_IVBCLASS_V1:
leaf_len = numeric_leaf(&value, &fieldtype->vbclass_v1.vbpoff);
pos += sizeof(fieldtype->vbclass_v1) - sizeof(fieldtype->vbclass_v1.vbpoff) + leaf_len;
copylen = numeric_leaf(&value, &fieldtype->vbclass_v1.vbpoff);
pos += copylen;
continue; |
|
|
Back to top |
|
|
sagitario
Joined: 03 Mar 2007 Posts: 292
|
Posted: Thu Jul 16, 2009 12:48 pm Post subject: |
|
|
Hi,
thanks for the patches. I've added them to the source in svn.
The class still contains the __vbptr element, so the LF_VBCLASS doesn't seem necessary for the debugger. So I guess removing these entries is ok.
Rainer |
|
Back to top |
|
|
sagitario
Joined: 03 Mar 2007 Posts: 292
|
Posted: Fri Jul 17, 2009 1:57 am Post subject: |
|
|
Hi again,
I reconsidered this again and compared it to what the Microsoft compiler emits. It doesn't place any friend functions into the debug info, but friend classes. I mimicked that.
The virtual base class info is a necessary element in the type info, as it is a necessary to watch fields of the base class, so I added a conversion for this, too.
Best,
Rainer |
|
Back to top |
|
|
|