From 9a4f23a450541fe5ed9dc1cd35b32b8621736949 Mon Sep 17 00:00:00 2001 From: Dan Gudmundsson Date: Thu, 8 Dec 2011 14:29:58 +0100 Subject: [observer] Add basic documentation --- lib/observer/doc/src/Makefile | 2 + lib/observer/doc/src/observer.xml | 58 +++++++++++ lib/observer/doc/src/observer_ug.xml | 190 +++++++++++++++++++++++++++++++++++ lib/observer/doc/src/part.xml | 3 +- lib/observer/doc/src/ref_man.xml | 3 +- lib/observer/src/observer_wx.erl | 12 ++- 6 files changed, 262 insertions(+), 6 deletions(-) create mode 100644 lib/observer/doc/src/observer.xml create mode 100644 lib/observer/doc/src/observer_ug.xml diff --git a/lib/observer/doc/src/Makefile b/lib/observer/doc/src/Makefile index f82a49abbe..cd9f9466ca 100644 --- a/lib/observer/doc/src/Makefile +++ b/lib/observer/doc/src/Makefile @@ -36,6 +36,7 @@ RELSYSDIR = $(RELEASE_PATH)/lib/$(APPLICATION)-$(VSN) XML_APPLICATION_FILES = ref_man.xml XML_REF3_FILES = \ crashdump.xml \ + observer.xml \ etop.xml \ ttb.xml XML_REF6_FILES = observer_app.xml @@ -48,6 +49,7 @@ XML_PART_FILES = \ XML_CHAPTER_FILES = \ crashdump_ug.xml \ etop_ug.xml \ + observer_ug.xml \ ttb_ug.xml \ notes.xml \ notes_history.xml diff --git a/lib/observer/doc/src/observer.xml b/lib/observer/doc/src/observer.xml new file mode 100644 index 0000000000..03830f2b1c --- /dev/null +++ b/lib/observer/doc/src/observer.xml @@ -0,0 +1,58 @@ + + + + +
+ + 2011 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + Observer + Dan Gudmundsson + + 1 + + + 2011-12-08 + PA1 + observer.xml +
+ observer + A GUI tool for observing an erlang system. + +

The observer is gui frontend containing various tools to + inspect a system. It displays system information, application + structures, process information, ets or mnesia tables and a frontend + for tracing with ttb. +

+ +

See the user's guide + for more information about how to get started.

+
+ + + start() -> ok + Start the observer gui + +

This function starts the observer gui. + Close the window to stop the application. +

+
+
+
+
diff --git a/lib/observer/doc/src/observer_ug.xml b/lib/observer/doc/src/observer_ug.xml new file mode 100644 index 0000000000..569d72e71e --- /dev/null +++ b/lib/observer/doc/src/observer_ug.xml @@ -0,0 +1,190 @@ + + + + +
+ + 2011 + Ericsson AB. 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. + + + + Observer + + + + + observer_ug.xml +
+ +
+ Introduction +

Observer, is a graphical tool for observing the characteristics of + erlang systems. Observer displays system information, application + supervisor trees, process information, ets or mnesia tables and contains + a frontend for erlang tracing. +

+
+ +
+ General +

Normally observer should be run from a standalone node to minimize + the impact of the system being observed. Example: +

+ + > erl -sname observer -hidden -setcookie MyCookie -run observer + +

+ Choose which node to observe via Nodes menu. The View/Refresh + Interval controls how frequent the view should be updated. + The refresh interval is set per viewer so you can + have different settings for each viewer. To minimize the system + impact only the active viewer is updated and the other + views will be updated when activated. +

+ +

Only R15B nodes can be observed.

+
+ +

In general the mouse buttons behaves as expected, use left click + to select objects, right click to pop up a menu with most used + choices and double click to bring up information about the + selected object. In most viewers with several columns you can change + sort order by left clicking on column header. +

+
+ +
+ Applications +

The Applications view lists application information. + Select an application in the left list to display its supervisor + tree. +

+

Trace process will add the selected process identifier + to Trace Overview view and the node the process resides on + will be added as well. +

+

Trace named process will add the + registered name of the process. This can be useful when tracing on + several nodes, then processes with that name will be traced on all traced + nodes. +

+

Trace process tree and Trace named process + tree will add the selected process and all processes below, + right of, it to the Trace Overview view. +

+
+ +
+ Processes +

The Processes view lists process information. + For each process the following information is presented: +

+ + Pid + The process identifier. + Reds + This is the number of reductions that has been executed + on the process + Memory + This is the size of the process in bytes, obtained by a + call to process_info(Pid,memory). + MsgQ + This is the length of the message queue for the process. + + +

Reds can be presented as accumulated values or as values since last update.

+
+

Trace Processes will add the selected process identifiers to the Trace Overview view and the + node the processes reside on will be added as well. + Trace Named Processes will add the registered name of processes. This can be useful + when tracing is done on several nodes, then processes with that name will be traced on all traced nodes. +

+
+ +
+ Table Viewer +

The Table Viewer view lists tables. By default ets tables + are visible and unreadable, private ets, tables and tables created by the OTP + applications are not visible. Use View menu to view "system" + ets tables, unreadable ets tables or mnesia tables. +

+

Double click to view the content of the table. Select table and activate View/Table Information + menu to view table information. +

+

In the table viewer you can regexp search for objects, edit and delete objects. +

+
+ +
+ Trace Overview +

The Trace Overview view handles tracing. Tracing is done + by selecting which processes to be traced and how to trace + them. You can trace messages, function calls and events, where + events are process related events such as spawn, + exit and several others. +

+ +

When you want to trace function calls, you also need to setup + trace patterns. Trace patterns selects the function calls + that will be traced. The number of traced function calls can be + further reduced with match specifications. Match + specifications can also be used to trigger additional information + in the trace messages. +

+

Trace patterns only applies to the traced processes.

+ +

+ Processes are added from the Applications or Processes views. + A special new identifier, meaning all processes spawned after trace start, + can be added with the Add 'new' Process button. +

+

+ When adding processes, a window with trace options will pop up. The chosen options will + be set for the selected processes. + Process options can be changed by right clicking on a process. +

+

+ Processes added by process identifiers will add the nodes these + processes resides on in the node list. Additional nodes can be added by the Add + Nodes button. +

+

+ If function calls are traced, trace patterns must be added by Add Trace Pattern button. + Select a module, function(s) and a match specification. + If no functions are selected, all functions in the module will be traced. + A few basic match specifications are provided in the tool, and + you can provide your own match specifications. The syntax of match + specifications are described in the ERTS User's Guide. To simplify + the writing of a match specification they can also be written as + fun/1 see ms_transform manual page for + further information. +

+ +

Use the Start trace button to start the trace. + By default trace output is written to a new window, tracing is stopped when the + window is closed, or with Stop Trace button. + Trace output can be changed via Options/Output menu. + The trace settings, including match specifications, can be saved to, or loaded from, a file. +

+

More information about tracing can be found in dbg and in the chapter "Match + specifications in Erlang" in ERTS User's + Guide and the + ms_transform manual page. +

+
+
diff --git a/lib/observer/doc/src/part.xml b/lib/observer/doc/src/part.xml index bd6c2b6c77..0d6aad09f2 100644 --- a/lib/observer/doc/src/part.xml +++ b/lib/observer/doc/src/part.xml @@ -4,7 +4,7 @@
- 20022009 + 20022011 Ericsson AB. All Rights Reserved. @@ -31,6 +31,7 @@

The Observer application contains tools for tracing and investigation of distributed systems.

+ diff --git a/lib/observer/doc/src/ref_man.xml b/lib/observer/doc/src/ref_man.xml index 3d37570d2d..c33ce74141 100644 --- a/lib/observer/doc/src/ref_man.xml +++ b/lib/observer/doc/src/ref_man.xml @@ -4,7 +4,7 @@
- 20022009 + 20022011 Ericsson AB. All Rights Reserved. @@ -34,6 +34,7 @@

+ diff --git a/lib/observer/src/observer_wx.erl b/lib/observer/src/observer_wx.erl index 89f4afdba0..5a593abf11 100644 --- a/lib/observer/src/observer_wx.erl +++ b/lib/observer/src/observer_wx.erl @@ -61,7 +61,10 @@ }). start() -> - wx_object:start(?MODULE, [], []). + case wx_object:start(?MODULE, [], []) of + Err = {error, _} -> Err; + _Obj -> ok + end. create_menus(Object, Menus) when is_list(Menus) -> wx_object:call(Object, {create_menus, Menus}). @@ -126,6 +129,10 @@ setup(#state{frame = Frame} = State) -> %% I postpone the creation of the other tabs so they can query/use %% the window size + %% App Viewer Panel + AppPanel = observer_app_wx:start_link(Notebook, self()), + wxNotebook:addPage(Notebook, AppPanel, "Applications", []), + %% Process Panel ProPanel = observer_pro_wx:start_link(Notebook, self()), wxNotebook:addPage(Notebook, ProPanel, "Processes", []), @@ -138,9 +145,6 @@ setup(#state{frame = Frame} = State) -> TracePanel = observer_trace_wx:start_link(Notebook, self()), wxNotebook:addPage(Notebook, TracePanel, ?TRACE_STR, []), - %% App Viewer Panel - AppPanel = observer_app_wx:start_link(Notebook, self()), - wxNotebook:addPage(Notebook, AppPanel, "Applications", []), %% Force redraw (window needs it) wxWindow:refresh(Panel), -- cgit v1.2.3