diff options
Diffstat (limited to 'lib/debugger/src')
28 files changed, 207 insertions, 173 deletions
diff --git a/lib/debugger/src/Makefile b/lib/debugger/src/Makefile index f115f49d98..9594a0bfe3 100644 --- a/lib/debugger/src/Makefile +++ b/lib/debugger/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1997-2013. All Rights Reserved. +# Copyright Ericsson AB 1997-2016. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/dbg_debugged.erl b/lib/debugger/src/dbg_debugged.erl index 99bed6f01b..e142af4ae0 100644 --- a/lib/debugger/src/dbg_debugged.erl +++ b/lib/debugger/src/dbg_debugged.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2013. All Rights Reserved. +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -70,7 +70,10 @@ msg_loop(Meta, Mref, SaveStacktrace) -> %% Meta is evaluating a receive, must be done within context %% of real (=this) process {sys, Meta, {'receive',Msg}} -> - receive Msg -> Meta ! {self(), rec_acked} end, + receive Msg -> + Meta ! {self(), rec_acked}, + ok + end, msg_loop(Meta, Mref, SaveStacktrace); %% Meta needs something evaluated within context of real process diff --git a/lib/debugger/src/dbg_icmd.erl b/lib/debugger/src/dbg_icmd.erl index 4c34f253c6..57a3719a50 100644 --- a/lib/debugger/src/dbg_icmd.erl +++ b/lib/debugger/src/dbg_icmd.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2015. All Rights Reserved. +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -171,10 +171,10 @@ handle_cmd(Bs, Status, Ieval) -> %% User control of process execution and settings %%==================================================================== -step(Meta) -> Meta ! {user, {cmd, step}}. -next(Meta) -> Meta ! {user, {cmd, next}}. -continue(Meta) -> Meta ! {user, {cmd, continue}}. -finish(Meta) -> Meta ! {user, {cmd, finish}}. +step(Meta) -> Meta ! {user, {cmd, step}}, ok. +next(Meta) -> Meta ! {user, {cmd, next}}, ok. +continue(Meta) -> Meta ! {user, {cmd, continue}}, ok. +finish(Meta) -> Meta ! {user, {cmd, finish}}, ok. skip(Meta) -> Meta ! {user, {cmd, skip}}. timeout(Meta) -> Meta ! {user, timeout}. @@ -267,7 +267,7 @@ handle_int_msg({old_code,Mod}, Status, Bs, #ieval{level=Le,module=M}=Ieval) -> if Status =:= idle, Le =:= 1 -> - erase([Mod|db]), + erase(?DB_REF_KEY(Mod)), put(cache, []); true -> case dbg_istk:in_use_p(Mod, M) of @@ -277,7 +277,7 @@ handle_int_msg({old_code,Mod}, Status, Bs, exit(get(self), kill), dbg_ieval:exception(exit, old_code, Bs, Ieval); false -> - erase([Mod|db]), + erase(?DB_REF_KEY(Mod)), put(cache, []) end end; diff --git a/lib/debugger/src/dbg_idb.erl b/lib/debugger/src/dbg_idb.erl index 9ce3ec3ef2..55177bbe76 100644 --- a/lib/debugger/src/dbg_idb.erl +++ b/lib/debugger/src/dbg_idb.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2009. All Rights Reserved. +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/dbg_ieval.erl b/lib/debugger/src/dbg_ieval.erl index 7ed371a653..f5e079ef7e 100644 --- a/lib/debugger/src/dbg_ieval.erl +++ b/lib/debugger/src/dbg_ieval.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2015. All Rights Reserved. +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -560,7 +560,7 @@ get_function(Mod, Name, Args, extern) -> end. db_ref(Mod) -> - case get([Mod|db]) of + case get(?DB_REF_KEY(Mod)) of undefined -> case dbg_iserver:call(get(int), {get_module_db, Mod, get(self)}) of @@ -572,7 +572,7 @@ db_ref(Mod) -> Node =/= node() -> {Node,ModDb}; true -> ModDb end, - put([Mod|db], DbRef), + put(?DB_REF_KEY(Mod), DbRef), DbRef end; DbRef -> diff --git a/lib/debugger/src/dbg_ieval.hrl b/lib/debugger/src/dbg_ieval.hrl index 95d0842b19..ad422a9e4a 100644 --- a/lib/debugger/src/dbg_ieval.hrl +++ b/lib/debugger/src/dbg_ieval.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2005-2011. All Rights Reserved. +%% Copyright Ericsson AB 2005-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -27,3 +27,5 @@ %% (i.e. the next call will leave interpreted code). top = false }). + +-define(DB_REF_KEY(Mod), {Mod,db}). diff --git a/lib/debugger/src/dbg_iload.erl b/lib/debugger/src/dbg_iload.erl index 2a8bcd32d8..369b456524 100644 --- a/lib/debugger/src/dbg_iload.erl +++ b/lib/debugger/src/dbg_iload.erl @@ -39,7 +39,7 @@ %% dbg_iserver. We are suspended until the module has been loaded. %%-------------------------------------------------------------------- -spec load_mod(Mod, file:filename(), binary(), ets:tid()) -> - {'ok', Mod} when is_subtype(Mod, atom()). + {'ok', Mod} when Mod :: atom(). load_mod(Mod, File, Binary, Db) -> Flag = process_flag(trap_exit, true), @@ -541,7 +541,7 @@ fun_clauses([]) -> []. new_map(Fs0, Anno, F) -> Line = ln(Anno), Fs1 = map_fields(Fs0, F), - Fs2 = [{ln(A),K,V} || {map_field_assoc,A,K,V} <- Fs1], + Fs2 = [{L,K,V} || {map_field_assoc,L,K,V} <- Fs1], try {value,Line,map_literal(Fs2, #{})} catch diff --git a/lib/debugger/src/dbg_iserver.erl b/lib/debugger/src/dbg_iserver.erl index 28e8012f71..3e959e8e30 100644 --- a/lib/debugger/src/dbg_iserver.erl +++ b/lib/debugger/src/dbg_iserver.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2012. All Rights Reserved. +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -72,17 +72,17 @@ cast(Int, Request) -> gen_server:cast(Int, Request). safe_call(Request) -> - ensure_started(), + {ok, _} = ensure_started(), call(Request). safe_cast(Request) -> - ensure_started(), + {ok, _} = ensure_started(), cast(Request). ensure_started() -> case whereis(?MODULE) of undefined -> start(); - _Pid -> ignore + Pid -> {ok, Pid} end. %%--Module database--------------------------------------------------- @@ -214,7 +214,6 @@ handle_call({new_process, Pid, Meta, Function}, _From, State) -> %% Code loading handle_call({load, Mod, Src, Bin}, _From, State) -> - %% Create an ETS table for storing information about the module Db = State#state.db, ModDb = ets:new(Mod, [ordered_set, public]), @@ -285,23 +284,28 @@ handle_call({contents, Mod, Pid}, _From, State) -> {reply, {ok, Bin}, State}; handle_call({raw_contents, Mod, Pid}, _From, State) -> Db = State#state.db, - [{{Mod, refs}, ModDbs}] = ets:lookup(Db, {Mod, refs}), - ModDb = if - Pid =:= any -> hd(ModDbs); - true -> - lists:foldl(fun(T, not_found) -> - [{T, Pids}] = ets:lookup(Db, T), - case lists:member(Pid, Pids) of - true -> T; - false -> not_found - end; - (_T, T) -> T - end, - not_found, - ModDbs) - end, - [{mod_raw, Bin}] = ets:lookup(ModDb, mod_raw), - {reply, {ok, Bin}, State}; + case ets:lookup(Db, {Mod, refs}) of + [{{Mod, refs}, ModDbs}] -> + ModDb = + if + Pid =:= any -> hd(ModDbs); + true -> + lists:foldl(fun(T, not_found) -> + [{T, Pids}] = ets:lookup(Db, T), + case lists:member(Pid, Pids) of + true -> T; + false -> not_found + end; + (_T, T) -> T + end, + not_found, + ModDbs) + end, + [{mod_raw, Bin}] = ets:lookup(ModDb, mod_raw), + {reply, {ok, Bin}, State}; + [] -> % code not interpreted + {reply, not_found, State} + end; handle_call({is_interpreted, Mod, Name, Arity}, _From, State) -> Db = State#state.db, Reply = case ets:lookup(Db, {Mod, refs}) of @@ -402,8 +406,10 @@ handle_cast({set_status, Meta, Status, Info}, State) -> send_all(subscriber, {new_status, Proc#proc.pid, Status, Info}, State), if Status =:= break -> - auto_attach(break, State#state.auto, Proc); - true -> ignore + _ = auto_attach(break, State#state.auto, Proc), + ok; + true -> + ok end, Proc2 = Proc#proc{status=Status, info=Info}, {noreply, State#state{procs=lists:keyreplace(Meta, #proc.meta, @@ -470,7 +476,7 @@ handle_info({'EXIT',Who,Why}, State) -> [self(),AttPid,Pid,Why,ExitInfo]); undefined -> %% Otherwise, auto attach if necessary - auto_attach(exit, State#state.auto, Pid), + _ = auto_attach(exit, State#state.auto, Pid), Who end, send_all(subscriber, {new_status,Pid,exit,Why}, State), @@ -583,7 +589,8 @@ send_all(Pids, Msg) -> lists:foreach(fun(Pid) -> send(Pid, Msg) end, Pids). send(Pid, Msg) -> - Pid ! {int, Msg}. + Pid ! {int, Msg}, + ok. get_proc({Type, Pid}, Procs) -> Index = case Type of diff --git a/lib/debugger/src/dbg_istk.erl b/lib/debugger/src/dbg_istk.erl index d6c512bdf8..886ea142af 100644 --- a/lib/debugger/src/dbg_istk.erl +++ b/lib/debugger/src/dbg_istk.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2011-2013. All Rights Reserved. +%% Copyright Ericsson AB 2011-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/dbg_wx_break.erl b/lib/debugger/src/dbg_wx_break.erl index b577cfdaec..764322d7c4 100644 --- a/lib/debugger/src/dbg_wx_break.erl +++ b/lib/debugger/src/dbg_wx_break.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/dbg_wx_break_win.erl b/lib/debugger/src/dbg_wx_break_win.erl index c9464f1e07..770681510d 100644 --- a/lib/debugger/src/dbg_wx_break_win.erl +++ b/lib/debugger/src/dbg_wx_break_win.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -65,18 +65,18 @@ create_win(Parent, Pos, function, Mod, _Line) -> {choices, IntStrs}]), Expand = [{border, 5}, {flag,?wxLEFT bor ?wxRIGHT bor ?wxEXPAND}], - wxSizer:add(MainS, Label, [{border,5}, + _ = wxSizer:add(MainS, Label, [{border,5}, {flag,?wxTOP bor ?wxLEFT bor ?wxRIGHT}]), - wxSizer:add(MainS, Text, Expand), + _ = wxSizer:add(MainS, Text, Expand), FunLabel = wxStaticText:new(Win, ?wxID_ANY, "Function:"), LB = wxListBox:new(Win, ?wxID_ANY, [{size,{-1, 100}},{style,?wxLB_MULTIPLE}]), - wxSizer:add(MainS, FunLabel, Expand), - wxSizer:add(MainS, LB, [{proportion,1}|Expand]), + _ = wxSizer:add(MainS, FunLabel, Expand), + _ = wxSizer:add(MainS, LB, [{proportion,1}|Expand]), wxSizer:setMinSize(MainS, 300, 400), OK = wxDialog:createStdDialogButtonSizer(Win, ?wxOK bor ?wxCANCEL), - wxSizer:add(MainS, OK, [{border,5},{flag,?wxALL}]), + _ = wxSizer:add(MainS, OK, [{border,5},{flag,?wxALL}]), wxDialog:setSizer(Win,MainS), - wxSizer:fit(MainS, Win), + _ = wxSizer:fit(MainS, Win), wxSizer:setSizeHints(MainS,Win), wxComboBox:setFocus(Text), wxDialog:connect(Win, command_button_clicked), @@ -110,11 +110,11 @@ create_win(Parent, Pos, Type, Mod, Line) -> IntStrs = [atom_to_list(M) || M <- Int], ModT = wxComboBox:new(Win, ?wxID_ANY, [{choices,IntStrs}]), ModSz = create_label_of_control(Win, "Module:", ModT, Mod), - wxSizer:add(MainS,ModSz,[{flag, ?wxEXPAND}]), + _ = wxSizer:add(MainS,ModSz,[{flag, ?wxEXPAND}]), %% Create rest of text input fields Add = fun({IType, Label, Def}) -> {Sz, Text} = create_sizer_with_text(Win, Label, Def), - wxSizer:add(MainS, Sz, [{flag, ?wxEXPAND}]), + _ = wxSizer:add(MainS, Sz, [{flag, ?wxEXPAND}]), {Text, IType} end, Inputs = case Type of @@ -129,15 +129,15 @@ create_win(Parent, Pos, Type, Mod, Line) -> Entries = wx:map(Add, Inputs), %% Create and add radio box {TriggerBox,Trigger} = create_trigger_box(Win), - wxSizer:add(MainS, TriggerBox, [{border,5},{flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(MainS, TriggerBox, [{border,5},{flag,?wxALL bor ?wxEXPAND}]), - wxSizer:addStretchSpacer(MainS), + _ = wxSizer:addStretchSpacer(MainS), %% Put it together OK = wxDialog:createStdDialogButtonSizer(Win, ?wxOK bor ?wxCANCEL), - wxSizer:add(MainS, OK, [{border,5},{flag,?wxALL}]), + _ = wxSizer:add(MainS, OK, [{border,5},{flag,?wxALL}]), wxSizer:setMinSize(MainS, 300, -1), wxDialog:setSizer(Win,MainS), - wxSizer:fit(MainS, Win), + _ = wxSizer:fit(MainS, Win), wxSizer:setSizeHints(MainS,Win), wxComboBox:setFocus(ModT), wxDialog:connect(Win, command_button_clicked), @@ -243,8 +243,8 @@ create_label_of_control(Parent, Label, Control, Def) -> Text = wxStaticText:new(Parent, ?wxID_ANY, Label), Border = {border, 5}, Flag = ?wxRIGHT bor ?wxLEFT bor ?wxALIGN_CENTRE_VERTICAL, - wxSizer:add(Sizer, Text, [{proportion,1}, {flag,Flag}, Border]), - wxSizer:add(Sizer, Control, [{proportion,3}, {flag,Flag bor ?wxEXPAND}, Border]), + _ = wxSizer:add(Sizer, Text, [{proportion,1}, {flag,Flag}, Border]), + _ = wxSizer:add(Sizer, Control, [{proportion,3}, {flag,Flag bor ?wxEXPAND}, Border]), wxControl:setLabel(Control, dbg_wx_win:to_string(Def)), Sizer. @@ -252,11 +252,11 @@ create_trigger_box(Win) -> SBox = wxStaticBox:new(Win, ?wxID_ANY, "Trigger Action:"), SBS = wxStaticBoxSizer:new(SBox, ?wxVERTICAL), Ebtn = wxRadioButton:new(Win, ?wxID_ANY, "Enable"), - wxSizer:add(SBS,Ebtn), + _ = wxSizer:add(SBS,Ebtn), Dibtn = wxRadioButton:new(Win, ?wxID_ANY, "Disable"), - wxSizer:add(SBS,Dibtn), + _ = wxSizer:add(SBS,Dibtn), Debtn = wxRadioButton:new(Win, ?wxID_ANY, "Delete"), - wxSizer:add(SBS,Debtn), + _ = wxSizer:add(SBS,Debtn), wxRadioButton:setValue(Ebtn, true), {SBS, [{Ebtn,enable},{Dibtn,disable},{Debtn,delete}]}. diff --git a/lib/debugger/src/dbg_wx_code.erl b/lib/debugger/src/dbg_wx_code.erl index a0e6c94d60..473963500a 100644 --- a/lib/debugger/src/dbg_wx_code.erl +++ b/lib/debugger/src/dbg_wx_code.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2013. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -127,20 +127,22 @@ load_code(Ed, Code) -> %%io:format("~p ~p ~p~n", [Lines, Sz, LW]), ?stc:setMarginWidth(Ed, 0, LW+5), ?stc:setReadOnly(Ed, true), - Ed. + ok. unload_code(Ed) -> ?stc:setReadOnly(Ed, false), ?stc:setTextRaw(Ed, <<0:8>>), ?stc:setReadOnly(Ed, true), - Ed. + ok. add_break_to_code(Ed, Line, active) -> ?stc:markerDelete(Ed, Line-1, 1), - ?stc:markerAdd(Ed, Line-1, 0); + ?stc:markerAdd(Ed, Line-1, 0), + ok; add_break_to_code(Ed, Line, inactive) -> ?stc:markerDelete(Ed, Line-1, 0), - ?stc:markerAdd(Ed, Line-1, 1). + ?stc:markerAdd(Ed, Line-1, 1), + ok. del_break_from_code(Ed,Line) -> ?stc:markerDelete(Ed, Line-1, 0), diff --git a/lib/debugger/src/dbg_wx_filedialog_win.erl b/lib/debugger/src/dbg_wx_filedialog_win.erl index 910eda7fad..f7b031dc28 100644 --- a/lib/debugger/src/dbg_wx_filedialog_win.erl +++ b/lib/debugger/src/dbg_wx_filedialog_win.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2014. All Rights Reserved. +%% Copyright Ericsson AB 2009-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -118,9 +118,9 @@ init([Parent, Id, Options0]) -> wxTextCtrl:connect(Dir, char, [{callback, IsTab}]), Top = wxBoxSizer:new(?wxHORIZONTAL), - wxSizer:add(Top, Back, [{border, 2},{flag,?wxALL bor ?wxEXPAND}]), - wxSizer:add(Top, Forw, [{border, 2},{flag,?wxALL bor ?wxEXPAND}]), - wxSizer:add(Top, Up, [{border, 2},{flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(Top, Back, [{border, 2},{flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(Top, Forw, [{border, 2},{flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(Top, Up, [{border, 2},{flag,?wxALL bor ?wxEXPAND}]), %% List Ctrl {Art, IconMap} = create_icons(ExtraIcons), @@ -154,13 +154,13 @@ init([Parent, Id, Options0]) -> %% OK done Box = wxBoxSizer:new(?wxVERTICAL), - wxSizer:add(Box, Top, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}]), - wxSizer:add(Box, Dir, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}]), - wxSizer:add(Box, LC, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}, {proportion, 1}]), - wxSizer:add(Box, Bott, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(Box, Top, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(Box, Dir, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(Box, LC, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}, {proportion, 1}]), + _ = wxSizer:add(Box, Bott, [{border, 2}, {flag,?wxALL bor ?wxEXPAND}]), wxWindow:setSizer(Dlg, Box), - wxSizer:fit(Box, Dlg), + _ = wxSizer:fit(Box, Dlg), wxSizer:setSizeHints(Box,Dlg), State = #state{win=Dlg, back=Back, forward=Forw, up=Up, diff --git a/lib/debugger/src/dbg_wx_filedialog_win.hrl b/lib/debugger/src/dbg_wx_filedialog_win.hrl index 96a6fb2ae9..3eb21ffb29 100644 --- a/lib/debugger/src/dbg_wx_filedialog_win.hrl +++ b/lib/debugger/src/dbg_wx_filedialog_win.hrl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009. All Rights Reserved. +%% Copyright Ericsson AB 2009-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/dbg_wx_interpret.erl b/lib/debugger/src/dbg_wx_interpret.erl index f93a9089d7..4dcb5b65ac 100644 --- a/lib/debugger/src/dbg_wx_interpret.erl +++ b/lib/debugger/src/dbg_wx_interpret.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/dbg_wx_mon.erl b/lib/debugger/src/dbg_wx_mon.erl index cd09dd1273..a32a6894b8 100644 --- a/lib/debugger/src/dbg_wx_mon.erl +++ b/lib/debugger/src/dbg_wx_mon.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2014. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -135,7 +135,7 @@ init2(CallingPid, Mode, SFile, GS) -> %% Start other necessary stuff dbg_wx_win:init(), - dbg_wx_winman:start(), % Debugger window manager + _ = dbg_wx_winman:start(), % Debugger window manager %% Create monitor window Title = "Monitor", @@ -339,7 +339,7 @@ gui_cmd('Delete All Modules', State) -> lists:foreach(fun(Mod) -> int:nn(Mod) end, int:interpreted()), State; gui_cmd({module, Mod, What}, State) -> - case What of + _ = case What of delete -> int:nn(Mod); view -> Window = dbg_wx_mon_win:get_window(State#state.win), diff --git a/lib/debugger/src/dbg_wx_mon_win.erl b/lib/debugger/src/dbg_wx_mon_win.erl index 5377ef83af..9737c9e67f 100644 --- a/lib/debugger/src/dbg_wx_mon_win.erl +++ b/lib/debugger/src/dbg_wx_mon_win.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2014. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -107,31 +107,31 @@ create_win_batch(Title, Menus) -> Hlb = 200, Listbox = wxListBox:new(Panel, ?wxID_ANY, [{size,{?Wf,Hlb}}, {style,?wxLB_SINGLE}]), - wxSizer:add(LeftSz,Listbox,[{proportion,1},{border,3},{flag,?wxEXPAND}]), + _ = wxSizer:add(LeftSz,Listbox,[{proportion,1},{border,3},{flag,?wxEXPAND}]), wxListBox:connect(Listbox, command_listbox_doubleclicked), wxListBox:connect(Listbox, right_down), SBox = wxStaticBox:new(Panel, ?wxID_ANY, "Auto Attach:"), SBS = wxStaticBoxSizer:new(SBox, ?wxVERTICAL), Fbtn = wxCheckBox:new(Panel, ?autoId, "First Call"), - wxSizer:add(SBS,Fbtn), + _ = wxSizer:add(SBS,Fbtn), Bbtn = wxCheckBox:new(Panel, ?autoId, "On Break"), - wxSizer:add(SBS,Bbtn), + _ = wxSizer:add(SBS,Bbtn), Ebtn = wxCheckBox:new(Panel, ?autoId, "On Exit"), - wxSizer:add(SBS,Ebtn), + _ = wxSizer:add(SBS,Ebtn), wxFrame:connect(Panel, command_checkbox_clicked), - wxSizer:add(LeftSz,SBS, [{flag,?wxEXPAND}]), + _ = wxSizer:add(LeftSz,SBS, [{flag,?wxEXPAND}]), SLabel = wxStaticText:new(Panel, ?wxID_ANY, "Stack Trace:\n On (with tail)"), - wxSizer:add(LeftSz,SLabel), + _ = wxSizer:add(LeftSz,SLabel), BLabel = wxStaticText:new(Panel, ?wxID_ANY, "Back Trace Size:\n 50000"), - wxSizer:add(LeftSz,BLabel), + _ = wxSizer:add(LeftSz,BLabel), StringsBox = wxStaticBox:new(Panel, ?wxID_ANY, "Strings:"), StringsBS = wxStaticBoxSizer:new(StringsBox, ?wxVERTICAL), Stringsbtn = wxCheckBox:new(Panel, ?stringsId, ?STRTEXT), - wxSizer:add(StringsBS,Stringsbtn), - wxSizer:add(LeftSz,StringsBS, [{flag,?wxEXPAND}]), + _ = wxSizer:add(StringsBS,Stringsbtn), + _ = wxSizer:add(LeftSz,StringsBS, [{flag,?wxEXPAND}]), %% Create list_crtl / grid Grid = wxListCtrl:new(Panel, [{winid, ?GRID}, @@ -169,12 +169,12 @@ create_win_batch(Title, Menus) -> wxWindow:setFocus(Grid), %% Put it in the window - wxSizer:add(MainSz, LeftSz, [{border, 3}, {flag,?wxALL bor ?wxEXPAND}]), - wxSizer:add(MainSz, Grid, [{border, 3}, {flag,?wxALL bor ?wxEXPAND}, + _ = wxSizer:add(MainSz, LeftSz, [{border, 3}, {flag,?wxALL bor ?wxEXPAND}]), + _ = wxSizer:add(MainSz, Grid, [{border, 3}, {flag,?wxALL bor ?wxEXPAND}, {proportion, 1}]), wxWindow:setSizer(Panel,MainSz), - wxSizer:fit(MainSz, Win), + _ = wxSizer:fit(MainSz, Win), wxSizer:setSizeHints(MainSz,Win), IconFile = dbg_wx_win:find_icon("erlang_bug.png"), diff --git a/lib/debugger/src/dbg_wx_settings.erl b/lib/debugger/src/dbg_wx_settings.erl index e45d74f67e..3a355f18a9 100644 --- a/lib/debugger/src/dbg_wx_settings.erl +++ b/lib/debugger/src/dbg_wx_settings.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2013. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/dbg_wx_src_view.erl b/lib/debugger/src/dbg_wx_src_view.erl index 43c36a4d8e..207c407fbc 100644 --- a/lib/debugger/src/dbg_wx_src_view.erl +++ b/lib/debugger/src/dbg_wx_src_view.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -56,7 +56,7 @@ code_area(Parent, Sizer) -> end, [SetStyle(Style) || Style <- Styles], ?stc:setKeyWords(Ed, 0, keyWords()), - wxSizer:add(Sizer, Ed, [{proportion,1}, {flag, ?wxEXPAND}]), + _ = wxSizer:add(Sizer, Ed, [{proportion,1}, {flag, ?wxEXPAND}]), Ed. diff --git a/lib/debugger/src/dbg_wx_trace.erl b/lib/debugger/src/dbg_wx_trace.erl index 5fd1519ba0..29c8e8cefb 100644 --- a/lib/debugger/src/dbg_wx_trace.erl +++ b/lib/debugger/src/dbg_wx_trace.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2014. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -321,7 +321,7 @@ gui_cmd('Kill', State) -> exit(State#state.pid, kill), State; gui_cmd('Messages', State) -> - case int:meta(State#state.meta, messages) of + _ = case int:meta(State#state.meta, messages) of [] -> dbg_wx_trace_win:eval_output(State#state.win,"< No Messages!\n", bold); Messages -> @@ -811,18 +811,21 @@ gui_show_module(Win, Mod, Line, Mod, _Pid, How) -> dbg_wx_trace_win:mark_line(Win, Line, How); gui_show_module(Win, Mod, Line, _Cm, Pid, How) -> Win2 = case dbg_wx_trace_win:is_shown(Win, Mod) of - {true, Win3} -> Win3; + %% {true, Win3} -> Win3; false -> gui_load_module(Win, Mod, Pid) end, dbg_wx_trace_win:mark_line(Win2, Line, How). gui_load_module(Win, Mod, _Pid) -> dbg_wx_trace_win:display(Win,{text, "Loading module..."}), - %% Contents = int:contents(Mod, Pid), - {ok, Contents} = dbg_iserver:call({raw_contents, Mod, any}), - Win2 = dbg_wx_trace_win:show_code(Win, Mod, Contents), - dbg_wx_trace_win:display(Win,{text, ""}), - Win2. + case dbg_iserver:call({raw_contents, Mod, any}) of + {ok, Contents} -> + Win2 = dbg_wx_trace_win:show_code(Win, Mod, Contents), + dbg_wx_trace_win:display(Win,{text, ""}), + Win2; + not_found -> + dbg_wx_trace_win:show_no_code(Win) + end. gui_update_bindings(Win,Meta) -> Bs = int:meta(Meta, bindings, nostack), diff --git a/lib/debugger/src/dbg_wx_trace_win.erl b/lib/debugger/src/dbg_wx_trace_win.erl index 232d61b1db..972a917728 100644 --- a/lib/debugger/src/dbg_wx_trace_win.erl +++ b/lib/debugger/src/dbg_wx_trace_win.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2013. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -123,7 +123,8 @@ %% GS = term() %%-------------------------------------------------------------------- init() -> - dbg_wx_win:init(). + _ = dbg_wx_win:init(), + ok. stop(#winInfo{window=Win}) -> (catch wxFrame:destroy(Win)), @@ -149,29 +150,29 @@ create_win(Parent, Title, Windows, Menus) -> Sizer = wxBoxSizer:new(?wxVERTICAL), Code = code_area(Panel), - wxSizer:add(Sizer, Code#sub.win, + _ = wxSizer:add(Sizer, Code#sub.win, [{proportion,1}, {border, 2}, {flag, ?wxEXPAND bor ?wxDOWN}]), wxSizer:setVirtualSizeHints(Sizer, Code#sub.win), ExpandWithBorder = [{border, 3},{flag,?wxEXPAND bor ?wxALL}], Search = search_area(Panel), - wxSizer:add(Sizer, Search#sub.win, ExpandWithBorder), + _ = wxSizer:add(Sizer, Search#sub.win, ExpandWithBorder), Bs = button_area(Panel), - wxSizer:add(Sizer, Bs#sub.win, ExpandWithBorder), + _ = wxSizer:add(Sizer, Bs#sub.win, ExpandWithBorder), InfoArea = wxBoxSizer:new(?wxHORIZONTAL), wxSizer:setMinSize(InfoArea, {100, ?EVAL_H}), Eval = eval_area(Panel), - wxSizer:add(InfoArea, Eval#sub.win, [{proportion,1},{flag,?wxEXPAND}]), + _ = wxSizer:add(InfoArea, Eval#sub.win, [{proportion,1},{flag,?wxEXPAND}]), Bind = bind_area(Panel), - wxSizer:add(InfoArea, Bind#sub.win, + _ = wxSizer:add(InfoArea, Bind#sub.win, [{proportion,1},{border, 2}, {flag,?wxEXPAND bor ?wxLEFT}]), - wxSizer:add(Sizer, InfoArea, ExpandWithBorder), + _ = wxSizer:add(Sizer, InfoArea, ExpandWithBorder), Trace = trace_area(Panel), - wxSizer:add(Sizer, Trace#sub.win, ExpandWithBorder), + _ = wxSizer:add(Sizer, Trace#sub.win, ExpandWithBorder), SB = wxFrame:createStatusBar(Win,[]), %% Note id and lastId to get the event when it dragged is complete @@ -192,7 +193,7 @@ create_win(Parent, Title, Windows, Menus) -> Wi = show_windows(enable_windows(Wi0,Windows)), wxWindow:setSizer(Panel, Sizer), - wxSizer:fit(Sizer, Win), + _ = wxSizer:fit(Sizer, Win), wxSizer:setSizeHints(Sizer,Win), IconFile = dbg_wx_win:find_icon("erlang_bug.png"), @@ -230,11 +231,11 @@ get_window(WinInfo) -> %%-------------------------------------------------------------------- configure(Wi=#winInfo{window=Win,m_szr={Panel,Sizer}}) -> wx:batch(fun() -> - show_windows(Wi), + _ = show_windows(Wi), wxSizer:layout(Sizer), %%wxWindow:setSizerAndFit(Panel,Sizer), wxWindow:setSizer(Panel, Sizer), - wxSizer:fit(Sizer, Win), + _ = wxSizer:fit(Sizer, Win), wxSizer:setSizeHints(Sizer,Win), Wi end). @@ -242,10 +243,10 @@ configure(Wi=#winInfo{window=Win,m_szr={Panel,Sizer}}) -> configure(Wi0=#winInfo{window=Win,m_szr={Panel,Sizer}}, Windows) -> wx:batch(fun() -> Wi = enable_windows(Wi0, Windows), - show_windows(Wi), + _ = show_windows(Wi), wxSizer:layout(Sizer), wxWindow:setSizer(Panel, Sizer), - wxSizer:fit(Sizer, Win), + _ = wxSizer:fit(Sizer, Win), wxSizer:setSizeHints(Sizer,Win), Wi end). @@ -348,7 +349,7 @@ add_break(WinInfo, Menu, {{Mod,Line},[Status|_Options]}=Break) -> case WinInfo#winInfo.editor of {Mod, Editor} -> dbg_wx_code:add_break_to_code(Editor, Line, Status); - _ -> ignore + _ -> ok end, add_break_to_menu(WinInfo, Menu, Break). @@ -372,7 +373,7 @@ update_break(WinInfo, {{Mod,Line},[Status|_Options]}=Break) -> case WinInfo#winInfo.editor of {Mod, Editor} -> dbg_wx_code:add_break_to_code(Editor, Line, Status); - _ -> ignore + _ -> ok end, update_break_in_menu(WinInfo, Break). @@ -929,7 +930,7 @@ button_area(Parent) -> B=wxButton:new(Parent, Button, [{label,dbg_wx_win:to_string(Name)}]), Id = wxWindow:getId(B), - wxSizer:add(Sz,B, []), + _ = wxSizer:add(Sz,B, []), wxButton:connect(B, command_button_clicked, [{id,Id}]) end, buttons()), #sub{name='Button Area', win=Sz}. @@ -938,22 +939,22 @@ button_area(Parent) -> search_area(Parent) -> HSz = wxBoxSizer:new(?wxHORIZONTAL), - wxSizer:add(HSz, wxStaticText:new(Parent, ?wxID_ANY, "Find:"), + _ = wxSizer:add(HSz, wxStaticText:new(Parent, ?wxID_ANY, "Find:"), [{flag,?wxALIGN_CENTER_VERTICAL}]), TC1 = wxTextCtrl:new(Parent, ?SEARCH_ENTRY, [{style, ?wxTE_PROCESS_ENTER}]), - wxSizer:add(HSz, TC1, [{proportion,3}, {flag, ?wxEXPAND}]), + _ = wxSizer:add(HSz, TC1, [{proportion,3}, {flag, ?wxEXPAND}]), Nbtn = wxRadioButton:new(Parent, ?wxID_ANY, "Next"), wxRadioButton:setValue(Nbtn, true), - wxSizer:add(HSz,Nbtn,[{flag,?wxALIGN_CENTER_VERTICAL}]), + _ = wxSizer:add(HSz,Nbtn,[{flag,?wxALIGN_CENTER_VERTICAL}]), Pbtn = wxRadioButton:new(Parent, ?wxID_ANY, "Previous"), - wxSizer:add(HSz,Pbtn,[{flag,?wxALIGN_CENTER_VERTICAL}]), + _ = wxSizer:add(HSz,Pbtn,[{flag,?wxALIGN_CENTER_VERTICAL}]), Cbtn = wxCheckBox:new(Parent, ?wxID_ANY, "Match Case"), - wxSizer:add(HSz,Cbtn,[{flag,?wxALIGN_CENTER_VERTICAL}]), - wxSizer:add(HSz, 15,15, [{proportion,1}, {flag, ?wxEXPAND}]), - wxSizer:add(HSz, wxStaticText:new(Parent, ?wxID_ANY, "Goto Line:"), + _ = wxSizer:add(HSz,Cbtn,[{flag,?wxALIGN_CENTER_VERTICAL}]), + _ = wxSizer:add(HSz, 15,15, [{proportion,1}, {flag, ?wxEXPAND}]), + _ = wxSizer:add(HSz, wxStaticText:new(Parent, ?wxID_ANY, "Goto Line:"), [{flag,?wxALIGN_CENTER_VERTICAL}]), TC2 = wxTextCtrl:new(Parent, ?GOTO_ENTRY, [{style, ?wxTE_PROCESS_ENTER}]), - wxSizer:add(HSz, TC2, [{proportion,0}, {flag, ?wxEXPAND}]), + _ = wxSizer:add(HSz, TC2, [{proportion,0}, {flag, ?wxEXPAND}]), wxTextCtrl:connect(TC1, command_text_updated), wxTextCtrl:connect(TC1, command_text_enter), wxTextCtrl:connect(TC1, kill_focus), @@ -969,14 +970,14 @@ eval_area(Parent) -> VSz = wxBoxSizer:new(?wxVERTICAL), HSz = wxBoxSizer:new(?wxHORIZONTAL), - wxSizer:add(HSz, wxStaticText:new(Parent, ?wxID_ANY, "Evaluator:"), + _ = wxSizer:add(HSz, wxStaticText:new(Parent, ?wxID_ANY, "Evaluator:"), [{flag,?wxALIGN_CENTER_VERTICAL}]), TC = wxTextCtrl:new(Parent, ?EVAL_ENTRY, [{style, ?wxTE_PROCESS_ENTER}]), - wxSizer:add(HSz, TC, [{proportion,1}, {flag, ?wxEXPAND}]), - wxSizer:add(VSz, HSz, [{flag, ?wxEXPAND}]), + _ = wxSizer:add(HSz, TC, [{proportion,1}, {flag, ?wxEXPAND}]), + _ = wxSizer:add(VSz, HSz, [{flag, ?wxEXPAND}]), TL = wxTextCtrl:new(Parent, ?EVAL_LOG, [{style, ?wxTE_DONTWRAP bor ?wxTE_MULTILINE bor ?wxTE_READONLY}]), - wxSizer:add(VSz, TL, [{proportion,5}, {flag, ?wxEXPAND}]), + _ = wxSizer:add(VSz, TL, [{proportion,5}, {flag, ?wxEXPAND}]), wxTextCtrl:connect(TC, command_text_enter), #sub{name='Evaluator Area', win=VSz, in=TC, out=TL}. diff --git a/lib/debugger/src/dbg_wx_view.erl b/lib/debugger/src/dbg_wx_view.erl index 9715a9c17b..86d009238f 100644 --- a/lib/debugger/src/dbg_wx_view.erl +++ b/lib/debugger/src/dbg_wx_view.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2014. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -263,7 +263,11 @@ shortcut(_) -> false. gui_load_module(Win, Mod) -> dbg_wx_trace_win:display(Win,{text, "Loading module..."}), - {ok, Contents} = dbg_iserver:call({raw_contents, Mod, any}), - Win2 = dbg_wx_trace_win:show_code(Win, Mod, Contents), - dbg_wx_trace_win:display(Win,{text, ""}), - Win2. + case dbg_iserver:call({raw_contents, Mod, any}) of + {ok, Contents} -> + Win2 = dbg_wx_trace_win:show_code(Win, Mod, Contents), + dbg_wx_trace_win:display(Win,{text, ""}), + Win2; + not_found -> + dbg_wx_trace_win:show_no_code(Win) + end. diff --git a/lib/debugger/src/dbg_wx_win.erl b/lib/debugger/src/dbg_wx_win.erl index 63f74392b5..25ffc5054c 100644 --- a/lib/debugger/src/dbg_wx_win.erl +++ b/lib/debugger/src/dbg_wx_win.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2013. All Rights Reserved. +%% Copyright Ericsson AB 2008-2015. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -43,7 +43,8 @@ %% GS = term() %%-------------------------------------------------------------------- init() -> - wx:new(). + _ = wx:new(), + ok. %%-------------------------------------------------------------------- %% create_menus(MenuBar, [Menu]) @@ -80,12 +81,12 @@ create_menus(_MB,[], _Win,Id) -> Id. create_menu_item(Menu, [separator|Is], Win, Id,Connect) -> - wxMenu:appendSeparator(Menu), + _ = wxMenu:appendSeparator(Menu), create_menu_item(Menu,Is,Win,Id+1,Connect); create_menu_item(Menu, [{Name, _N, cascade, Items}|Is], Win, Id0,Connect) -> Sub = wxMenu:new([]), Id = create_menu_item(Sub, Items, Win, Id0, false), - wxMenu:append(Menu, ?wxID_ANY, menu_name(Name,ignore), Sub), + _ = wxMenu:append(Menu, ?wxID_ANY, menu_name(Name,ignore), Sub), %% Simulate GS sub checkBox/RadioBox behaviour Self = self(), Butts = [{MI,get(MI)} || {MI,_,_} <- Items], @@ -95,13 +96,12 @@ create_menu_item(Menu, [{Name, _N, cascade, Items}|Is], Win, Id0,Connect) -> false -> Acc end end, - Filter = fun(_,_) -> + Filter = fun(Ev,_) -> Enabled = lists:foldl(IsChecked, [], Butts), - Self ! #wx{userData={Name, Enabled}, - event=#wxCommand{type=command_menu_selected}} + Self ! Ev#wx{userData={Name, Enabled}} end, - wxMenu:connect(Win, command_menu_selected, - [{id,Id0},{lastId, Id-1},{callback,Filter}]), + _ = wxMenu:connect(Win, command_menu_selected, + [{id,Id0},{lastId, Id-1},{callback,Filter}]), create_menu_item(Menu, Is, Win, Id, Connect); create_menu_item(Menu, [{Name,Pos}|Is], Win, Id, Connect) -> MenuId = case lists:member(Name, ['Debugger']) of @@ -169,7 +169,7 @@ add_break(Win, MenuName, Point) -> Delete = wxMenu:appendRadioItem(Trigger, ?wxID_ANY,"Delete"), Add(Delete, {break,Point,{trigger,delete}}), - wxMenu:append(Sub, ?wxID_ANY, "Trigger Action", Trigger), + _ = wxMenu:append(Sub, ?wxID_ANY, "Trigger Action", Trigger), MenuBtn = wxMenu:append(Menu,?wxID_ANY, Label, Sub), #break{mb={Menu,MenuBtn}, diff --git a/lib/debugger/src/dbg_wx_winman.erl b/lib/debugger/src/dbg_wx_winman.erl index 0045948d2f..ca858fa4bb 100644 --- a/lib/debugger/src/dbg_wx_winman.erl +++ b/lib/debugger/src/dbg_wx_winman.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2008-2011. All Rights Reserved. +%% Copyright Ericsson AB 2008-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -100,11 +100,11 @@ update_windows_menu(Win, [MonInfo|Infos]) -> OldItems = wxMenu:getMenuItems(Menu), [wxMenu:delete(Menu, Item) || Item <- OldItems], menuitem(Win, Menu,MonInfo, 700), - wxMenu:appendSeparator(Menu), + _ = wxMenu:appendSeparator(Menu), wx:foldl(fun(Info,Acc) -> menuitem(Win,Menu,Info,Acc) end, 701, Infos). menuitem(Window, Menu, {Title, Win}, Id) -> - wxMenu:append(Menu, Id, Title), + _ = wxMenu:append(Menu, Id, Title), wxWindow:connect(Window, command_menu_selected, [{id,Id},{userData,{dbg_ui_winman,Win}}]), Id+1. diff --git a/lib/debugger/src/debugger.appup.src b/lib/debugger/src/debugger.appup.src index 2fa3f5de5f..afad2a6a09 100644 --- a/lib/debugger/src/debugger.appup.src +++ b/lib/debugger/src/debugger.appup.src @@ -1,7 +1,7 @@ %% -*- erlang -*- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2014. All Rights Reserved. +%% Copyright Ericsson AB 2001-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/debugger.erl b/lib/debugger/src/debugger.erl index c188663668..f92c8e4a23 100644 --- a/lib/debugger/src/debugger.erl +++ b/lib/debugger/src/debugger.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2013. All Rights Reserved. +%% Copyright Ericsson AB 1997-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. diff --git a/lib/debugger/src/i.erl b/lib/debugger/src/i.erl index f8f6a3b245..2da3e77618 100644 --- a/lib/debugger/src/i.erl +++ b/lib/debugger/src/i.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2013. All Rights Reserved. +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -108,7 +108,7 @@ ib(Module,Function,Arity) -> ib(Module,Function,Arity,Cond) -> Breaks1 = int:all_breaks(Module), - int:break_in(Module,Function,Arity), + ok = int:break_in(Module,Function,Arity), Breaks2 = int:all_breaks(Module), lists:foreach(fun({Mod,Line}) -> int:test_at_break(Mod,Line,Cond) end, Breaks2--Breaks1). diff --git a/lib/debugger/src/int.erl b/lib/debugger/src/int.erl index 4f54beb45b..e5bade9abe 100644 --- a/lib/debugger/src/int.erl +++ b/lib/debugger/src/int.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1998-2015. All Rights Reserved. +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -352,10 +352,10 @@ start() -> dbg_iserver:start(). stop() -> lists:foreach( fun(Mod) -> - everywhere(distributed, - fun() -> + _ = everywhere(distributed, + fun() -> erts_debug:breakpoint({Mod,'_','_'}, false) - end) + end) end, interpreted()), dbg_iserver:stop(). @@ -524,21 +524,21 @@ check(Mod) when is_atom(Mod) -> catch check_module(Mod); check(File) when is_list(File) -> catch check_file(File). load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist) -> - everywhere(Dist, - fun() -> + _ = everywhere(Dist, + fun() -> code:purge(Mod), erts_debug:breakpoint({Mod,'_','_'}, false), {module,Mod} = code:load_binary(Mod, Beam, BeamBin) - end), + end), case erl_prim_loader:get_file(filename:absname(Src)) of {ok, SrcBin, _} -> MD5 = code:module_md5(BeamBin), Bin = term_to_binary({interpreter_module,Exp,Abst,SrcBin,MD5}), {module, Mod} = dbg_iserver:safe_call({load, Mod, Src, Bin}), - everywhere(Dist, - fun() -> + _ = everywhere(Dist, + fun() -> true = erts_debug:breakpoint({Mod,'_','_'}, true) > 0 - end), + end), {module, Mod}; error -> error @@ -547,7 +547,7 @@ load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist) -> check_module(Mod) -> case code:which(Mod) of Beam when is_list(Beam) -> - case find_src(Beam) of + case find_src(Mod, Beam) of Src when is_list(Src) -> check_application(Src), case check_beam(Beam) of @@ -608,7 +608,7 @@ check_application2("gs-"++_) -> throw({error,{app,gs}}); check_application2("debugger-"++_) -> throw({error,{app,debugger}}); check_application2(_) -> ok. -find_src(Beam) -> +find_src(Mod, Beam) -> Src0 = filename:rootname(Beam) ++ ".erl", case is_file(Src0) of true -> Src0; @@ -618,10 +618,22 @@ find_src(Beam) -> filename:basename(Src0)]), case is_file(Src) of true -> Src; - false -> error + false -> find_src_from_module(Mod) end end. +find_src_from_module(Mod) -> + Compile = Mod:module_info(compile), + case lists:keyfind(source, 1, Compile) of + {source, Src} -> + case is_file(Src) of + true -> Src; + false -> error + end; + false -> + error + end. + find_beam(Mod, Src) -> SrcDir = filename:dirname(Src), BeamFile = atom_to_list(Mod) ++ code:objfile_extension(), @@ -726,9 +738,9 @@ del_mod(AbsMod, Dist) -> list_to_atom(filename:basename(AbsMod,".erl")) end, dbg_iserver:safe_cast({delete, Mod}), - everywhere(Dist, - fun() -> + _ = everywhere(Dist, + fun() -> erts_debug:breakpoint({Mod,'_','_'}, false), erlang:yield() - end), + end), ok. |