-module(utTestTrace).
|
|
|
|
-compile([export_all, nowarn_unused_function, nowarn_unused_vars, nowarn_export_all]).
|
|
|
|
|
|
t1() ->
|
|
Pid = spawn(fun() -> do_t1(1) end),
|
|
send_msg(Pid, 100000).
|
|
|
|
t2() ->
|
|
Pid = spawn(fun() -> do_t2(1) end),
|
|
send_msg(Pid, 100000).
|
|
|
|
send_msg(Pid, 0) ->
|
|
io:format("IMY***********send_msg over ~p ~n ~p ~n", [0, Pid]),
|
|
ok;
|
|
send_msg(Pid, N) ->
|
|
Pid ! <<2:(N)>>,
|
|
% timer:sleep(1),
|
|
send_msg(Pid, N - 1).
|
|
|
|
do_t1(N) ->
|
|
case N == 1 orelse N == 90000 of
|
|
true ->
|
|
erlang:garbage_collect(),
|
|
Result = erlang:process_info(self(), [memory, garbage_collection]),
|
|
io:format("IMY************************* ~p~n ~w ~n", [N, Result]);
|
|
%io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p~n backtrace:~p~n~n", [N, erlang:process_display(self(), backtrace)]);
|
|
_ ->
|
|
ignore
|
|
end,
|
|
|
|
try
|
|
receive
|
|
_ ->
|
|
ok
|
|
%% do_t1(N + 1)
|
|
end,
|
|
do_t1(N + 1)
|
|
catch
|
|
_:_ ->
|
|
do_t1(N + 1)
|
|
end.
|
|
|
|
do_t2(N) ->
|
|
case N == 1 orelse N == 90000 of
|
|
true ->
|
|
erlang:garbage_collect(),
|
|
Result = erlang:process_info(self(), [memory, garbage_collection]),
|
|
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]),
|
|
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
|
|
_ ->
|
|
%io:format("IMY************************* ~p ~n", [N]),
|
|
ignore
|
|
end,
|
|
receive
|
|
_ ->
|
|
do_t2(N + 1)
|
|
end.
|
|
|
|
desult3(N, State) ->
|
|
%io:format("IMy*********************desult3 ~p~n",[N]),
|
|
do_t3(N).
|
|
|
|
desult4(N, State) ->
|
|
do_t4(N).
|
|
|
|
t3() ->
|
|
Pid = spawn(fun() -> do_t3(100000) end).
|
|
|
|
t4() ->
|
|
Pid = spawn(fun() -> do_t4(100000) end).
|
|
|
|
do_t3(0) ->
|
|
io:format("IMy*********************dfdfdffd33333333");
|
|
do_t3(N) ->
|
|
case N == 1 orelse N == 99999 of
|
|
true ->
|
|
erlang:garbage_collect(),
|
|
Result = erlang:process_info(self(), [memory, garbage_collection]),
|
|
io:format("IMY************************* ~p~n ~w ~n", [N, Result]),
|
|
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p~n backtrace:~p~n~n", [N, erlang:process_display(self(), backtrace)]);
|
|
_ ->
|
|
ignore
|
|
end,
|
|
|
|
try test:tt9(2) of
|
|
Ret ->
|
|
desult3(N - 1, Ret)
|
|
catch
|
|
_:_ ->
|
|
desult3(N - 1, error)
|
|
end.
|
|
do_t4(0) ->
|
|
io:format("IMy*********************dfdfdffd44444444444");
|
|
do_t4(N) ->
|
|
case N == 1 orelse N == 99999 of
|
|
true ->
|
|
erlang:garbage_collect(),
|
|
Result = erlang:process_info(self(), [memory, garbage_collection]),
|
|
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]),
|
|
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
|
|
_ ->
|
|
%io:format("IMY************************* ~p ~n", [N]),
|
|
ignore
|
|
end,
|
|
Ret1 = try test:tt9(2) of
|
|
Ret ->
|
|
Ret
|
|
catch
|
|
_:_ ->
|
|
error
|
|
end,
|
|
do_t4(N - 1).
|
|
|
|
do_t5(0) ->
|
|
io:format("IMy*********************dfdfdffd55555555555555");
|
|
do_t5(N) ->
|
|
case N == 1 orelse N == 99999 of
|
|
true ->
|
|
erlang:garbage_collect(),
|
|
Result = erlang:process_info(self(), [memory, garbage_collection]),
|
|
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]),
|
|
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
|
|
_ ->
|
|
%io:format("IMY************************* ~p ~n", [N]),
|
|
ignore
|
|
end,
|
|
try test:tt9(2) of
|
|
Ret ->
|
|
do_t5(N - 1)
|
|
catch
|
|
_:_ ->
|
|
error
|
|
end.
|
|
|
|
do_t6(0) ->
|
|
io:format("IMy*********************dfdfdffd55555555555555");
|
|
do_t6(N) ->
|
|
case N == 1 orelse N == 99999 of
|
|
true ->
|
|
erlang:garbage_collect(),
|
|
Result = erlang:process_info(self(), [memory, garbage_collection]),
|
|
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]);
|
|
%io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
|
|
_ ->
|
|
%io:format("IMY************************* ~p ~n", [N]),
|
|
ignore
|
|
end,
|
|
try test:tt9(2) of
|
|
Ret ->
|
|
do_t6(N - 1)
|
|
catch
|
|
_:_ ->
|
|
error
|
|
%after
|
|
% ok
|
|
end.
|
|
|
|
do_t7(0) ->
|
|
io:format("IMy********************11111");
|
|
do_t7(N) ->
|
|
io:format("IMy********************22222"),
|
|
try test:tt9(2) of
|
|
_Ret ->
|
|
io:format("IMy********************3333"),
|
|
do_t7(N - 1)
|
|
catch
|
|
throw:ret ->
|
|
io:format("IMy********************4444"),
|
|
do_t7(N - 1);
|
|
_:_ ->
|
|
io:format("IMy********************5555"),
|
|
error
|
|
end.
|
|
|
|
|
|
|
|
|