userdata types and detail formatter [message #1060747] |
Tue, 28 May 2013 06:45  |
Eclipse User |
|
|
|
I am using LDT 0.9 and I have been searching for a way to create bespoke detail formatters for my userdata types.
I use Lua embedded in a C++ program and for performance reasons, my userdata are dictionaries that are passed around as pointers.
The default for LDT is to display a simple string "userdata: xxxx".
I created Lua functions that can convert my userdata into Lua tables, and if I type in the expressions window "my_converter(my_user_data)" I can see my userdata object properly as a table.
Is it possible to create a detail formatter that would by default call the my_converter function?
Thanks a lot.
|
|
|
|
Re: userdata types and detail formatter [message #1060876 is a reply to message #1060747] |
Tue, 28 May 2013 15:28   |
Eclipse User |
|
|
|
To be more precise about the above link, I massively refactored introspection part of the debugger to allow custom inspectors which cover exactly your needs.
Sadly, it is not yet documented: I started a tutorial but it is still WIP 
If all your userdatas share the same metatable and you don't want to modify values from debugger implement it would be quite easy.
First you need the new debugger.lua file, and then plug a simple inspector should look like (untested):
-- regular debugger bootstrap
require"debugger"("localhost", 10000)
-- add your inspector
local introspection = require "debugger.introspection"
introspection.inspectors[my_metatable] = function(name, value, parent, fullname)
-- just inspect your customized table instead of userdata
return introspection.inspect(name, my_converter(value), parent, fullname)
end
Look debugger source for details, or this plugin for LuaJIT cdata for an actual example.
Again, this is still WIP so please report any problem you may encounter.
About value modification from debugger, this is a problem that has not been fully addressed yet. Currently the debugger will set value with something like value["key"] = loadstring(new_value)(), so unless this is possible with your userdata objects, it will fail.
[Updated on: Tue, 28 May 2013 15:30] by Moderator
|
|
|
Re: userdata types and detail formatter [message #1060977 is a reply to message #1060876] |
Wed, 29 May 2013 07:54  |
Eclipse User |
|
|
|
Hi Marc and Julien
Thanks a lot for your quick replies, they were very useful.
I managed to create my bespoke introspection logic an as currently I don't want to modify them within the debugger, your solution is great.
Thanks again
Marc
|
|
|
Powered by
FUDForum. Page generated in 0.02796 seconds