aboutsummaryrefslogtreecommitdiffstats
path: root/lib/debugger/src/debugger.erl
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
committerErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
commit84adefa331c4159d432d22840663c38f155cd4c1 (patch)
treebff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/debugger/src/debugger.erl
downloadotp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz
otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2
otp-84adefa331c4159d432d22840663c38f155cd4c1.zip
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/debugger/src/debugger.erl')
-rw-r--r--lib/debugger/src/debugger.erl118
1 files changed, 118 insertions, 0 deletions
diff --git a/lib/debugger/src/debugger.erl b/lib/debugger/src/debugger.erl
new file mode 100644
index 0000000000..b97091ee6b
--- /dev/null
+++ b/lib/debugger/src/debugger.erl
@@ -0,0 +1,118 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+-module(debugger).
+
+%% External exports
+-export([start/0, start/1, start/2, stop/0, quick/3, auto_attach/1]).
+
+%%==Erlang Debugger===================================================
+%%
+%% Graphical user interface to the Erlang Interpreter.
+%% The code for each process is divided into two modules, Name.erl
+%% and Name_win.erl, where Name.erl contains the logic and
+%% Name_win.erl the GS specific functionality.
+%%
+%% debugger
+%% --------
+%% Interface module.
+%%
+%% dbg_ui_winman
+%% -------------
+%% Window manager, keeping track of open windows and Debugger
+%% processes.
+%%
+%% dbg_ui_mon, dbg_ui_mon_win
+%% --------------------------
+%% Monitor window, main window of Debugger, displaying information
+%% about interpreted modules and debugged processes.
+%%
+%% dbg_ui_trace, dbg_ui_trace_win
+%% ------------------------------
+%% Attach process window, showing the code executed by a debugged
+%% process and providing a GUI for stepping, inspecting variables etc.
+%%
+%% dbg_ui_break, dbg_ui_break_win
+%% ------------------------------
+%% Help window for creating new breakpoints.
+%%
+%% dbg_ui_edit, dbg_ui_edit_win
+%% --------------------------------------
+%% Help window for editing terms, used for setting backtrace size
+%% (i.e. how many stack frames to display in the attach process window)
+%% and changing variable values.
+%%
+%% dbg_ui_interpret, dbg_ui_filedialog_win
+%% --------------------------------------
+%% Help window for selecting modules to interpret.
+%%
+%% dbg_ui_settings, dbg_ui_filedialog_win
+%% --------------------------------------
+%% Help window for saving and loading Debugger settings.
+%%
+%% dbg_ui_view
+%% -----------
+%% Help window for viewing interpreted modules (uses dbg_ui_trace_win).
+%%
+%% dbg_ui_win
+%% ----------
+%% GUI specific functionality used by more than one window type.
+%%
+%%====================================================================
+start() ->
+ start(global, default, default).
+start(Mode) when Mode==local; Mode==global ->
+ start(Mode, default, default);
+start(Gui) when Gui==gs; Gui==wx ->
+ start(global, default, Gui);
+start(SFile) when is_list(SFile), is_integer(hd(SFile)) ->
+ start(global, SFile, default).
+
+start(Mode, SFile) ->
+ start(Mode, SFile, default).
+
+start(Mode, SFile, gs) ->
+ dbg_ui_mon:start(Mode, SFile);
+start(Mode, SFile, wx) ->
+ dbg_wx_mon:start(Mode, SFile);
+start(Mode, SFile, default) ->
+ Gui = which_gui(),
+ start(Mode, SFile, Gui).
+
+stop() ->
+ dbg_ui_mon:stop().
+
+quick(M, F, A) ->
+ int:i(M),
+ auto_attach([init]),
+ apply(M, F, A).
+
+auto_attach(Flags) ->
+ case which_gui() of
+ gs -> int:auto_attach(Flags, {dbg_ui_trace, start, []});
+ wx -> int:auto_attach(Flags, {dbg_wx_trace, start, []})
+ end.
+
+which_gui() ->
+ try
+ wx:new(),
+ wx:destroy(),
+ wx
+ catch _:_ ->
+ gs
+ end.