Getting variables in function workspace during debugging
Mostrar comentarios más antiguos
I'm creating a mlapp data visualization tool and need to grab all variables in the current function workspace when debugging.
When running the app, while debugging a program, the user should be able to press a button when a breakpoint is reached to pull in all variables in the current function workspace to interact with the var data in the app. One main challenge is when this button is pressed, it goes into a callback function, which has its own function workspace within the app. I am using the below code to get each variable and do what I need to do with it:
variables = evalin('base', 'whos')
for ii = 1:numel(variables)
data = evalin('base', variables(ii).name);
% ....
% do something with data
% ....
end
I understand that 'base' is not what we want here. However, evalin only accepts 'base' and 'caller' and 'caller' is not correct either since it's a function of the app. So this is unable to grab the variables within the current function workspace when debugging, only the base workspace. Do you have any idea how to grab the variables for the current function you are in programmatically, while debugging?
7 comentarios
David Hill
el 2 de Mzo. de 2022
Place a stop in the function you are trying to inspect and all of its variables that are assigned at the time will be in the workspace.
David Hill -
As described in the original post - 'while debugging a program, the user should be able to press a button when a breakpoint is reached to pull in all variables', I don't think this is the issue.
The issue is that when the button press occurs and the callback is entered, the function breakpoint is no longer the active area of the function call stack.
I don't know of any (easy) way to programmatically navigate back to where the breakpoint is on the call stack.
Matt F
el 2 de Mzo. de 2022
Michael Van de Graaff
el 6 de Mzo. de 2022
I don't know if i understand the question, but I think I might want to for posterity. Let me give a couple ideas of how i'm interpreting what you say:
Interpretation 1: the app (call it app1) is running, and hits a breakpoint within app1, say inside a callback or function within the app. But you also have the base workspace, and you want access to those base variables while debugging, and your question is how to talk to the base workspace while debugging the app.
Interpretation 2: the app is running and you are also doing stuff in the base Matlab workspace and hit a breakpoint in a function NOT within the app, and want to reach into app1 and have access to those variables?
Or are both of those interpretations wrong?
Michael Van de Graaff
el 22 de Mzo. de 2022
Did you ever solve this problem Matt?
Matt F
el 22 de Mzo. de 2022
Respuestas (1)
Steven Lord
el 7 de Mzo. de 2022
0 votos
I'm creating a mlapp data visualization tool and need to grab all variables in the current function workspace when debugging.
When you enter debug mode you can switch between function workspaces via icons in the Editor or via the dbup and dbdown functions.
When running the app, while debugging a program, the user should be able to press a button when a breakpoint is reached to pull in all variables in the current function workspace to interact with the var data in the app.
Suppose that the variables in the "current function workspace" have the same name as "data in the app". Are you okay with the "data in the app" being overwritten by some other data (which may or may not be the same size or type or have the same meaning) that happens to have the same name?
Do you have any idea how to grab the variables for the current function you are in programmatically, while debugging?
IMO the answer is "You shouldn't." If you need to check something in the caller's workspace (to check that what your function received is what you expected it to receive) switch workspaces and check the value in situ then switch workspaces back to the workspace where you entered debug mode.
1 comentario
Categorías
Más información sobre Debugging and Analysis en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!