1: %% 2: %% %CopyrightBegin% 3: %% 4: %% Copyright Ericsson AB 2001-2011. All Rights Reserved. 5: %% 6: %% The contents of this file are subject to the Erlang Public License, 7: %% Version 1.1, (the "License"); you may not use this file except in 8: %% compliance with the License. You should have received a copy of the 9: %% Erlang Public License along with this software. If not, it can be 10: %% retrieved online at http://www.erlang.org/. 11: %% 12: %% Software distributed under the License is distributed on an "AS IS" 13: %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 14: %% the License for the specific language governing rights and limitations 15: %% under the License. 16: %% 17: %% %CopyrightEnd% 18: %% 19: 20: %% 21: -module(debugger_SUITE). 22: 23: %% Test break points. 24: 25: -include_lib("test_server/include/test_server.hrl"). 26: 27: -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, 28: init_per_group/2,end_per_group/2, 29: init_per_testcase/2,end_per_testcase/2, 30: app_test/1,erts_debug/1,encrypted_debug_info/1, 31: no_abstract_code/1]). 32: 33: suite() -> [{ct_hooks,[ts_install_cth]}]. 34: 35: all() -> 36: [app_test, erts_debug, no_abstract_code, 37: encrypted_debug_info]. 38: 39: groups() -> 40: []. 41: 42: init_per_suite(Config) -> 43: Config. 44: 45: end_per_suite(_Config) -> 46: ok. 47: 48: init_per_group(_GroupName, Config) -> 49: Config. 50: 51: end_per_group(_GroupName, Config) -> 52: Config. 53: 54: 55: init_per_testcase(_Case, Config) -> 56: Dog=test_server:timetrap(?t:minutes(0.5)), 57: [{watchdog, Dog}|Config]. 58: end_per_testcase(_Case, Config) -> 59: Dog=?config(watchdog, Config), 60: test_server:timetrap_cancel(Dog), 61: ok. 62: 63: app_test(Config) when is_list(Config) -> 64: ?line ?t:app_test(debugger), 65: ok. 66: 67: erts_debug(Config) when is_list(Config) -> 68: c:l(erts_debug), 69: ok. 70: 71: no_abstract_code(Config) when is_list(Config) -> 72: ?line PrivDir = ?config(priv_dir, Config), 73: ?line Simple = filename:join(PrivDir, "simple"), 74: ?line Source = Simple ++ ".erl", 75: ?line BeamFile = Simple ++ ".beam", 76: ?line simple_file(Source), 77: 78: %% Compile module without abstract code. 79: CompileFlags = [{outdir,PrivDir}], 80: ?line {ok,_} = compile:file(Source, CompileFlags), 81: ?line error = int:i(Simple), 82: 83: %% Cleanup. 84: ?line ok = file:delete(Source), 85: ?line ok = file:delete(BeamFile), 86: 87: ok. 88: 89: encrypted_debug_info(Config) when is_list(Config) -> 90: try begin crypto:start(), crypto:info(), crypto:stop(), ok end of 91: ok -> 92: encrypted_debug_info_1(Config) 93: catch 94: error:_ -> 95: {skip,"The crypto application is missing or broken"} 96: end. 97: 98: encrypted_debug_info_1(Config) -> 99: ?line PrivDir = ?config(priv_dir, Config), 100: ?line Simple = filename:join(PrivDir, "simple"), 101: ?line Source = Simple ++ ".erl", 102: ?line BeamFile = Simple ++ ".beam", 103: ?line simple_file(Source), 104: 105: %% Compile module. 106: Key = "_This a Crypto Key_", 107: CompileFlags = [{outdir,PrivDir},debug_info,{debug_info_key,Key}], 108: ?line {ok,_} = compile:file(Source, CompileFlags), 109: 110: %% Interpret module 111: ?line ok = beam_lib:crypto_key_fun(simple_crypto_fun(Key)), 112: ?line {module,simple} = int:i(Simple), 113: 114: %% Remove key. 115: ?line {ok,_} = beam_lib:clear_crypto_key_fun(), 116: ?line error = int:i(Simple), 117: 118: %% Cleanup. 119: ?line ok = file:delete(Source), 120: ?line ok = file:delete(BeamFile), 121: 122: ok. 123: 124: simple_crypto_fun(Key) -> 125: fun(init) -> ok; 126: ({debug_info, des3_cbc, simple, _}) -> Key 127: end. 128: 129: 130: simple_file(File) -> 131: simple_file(File, simple). 132: 133: simple_file(File, Module) -> 134: simple_file(File, Module, member). 135: 136: simple_file(File, Module, F) -> 137: B = list_to_binary(["-module(", atom_to_list(Module), "). " 138: "-export([t/0]). " 139: "t() -> " 140: " t([]). " 141: "t(L) -> " 142: " lists:", 143: atom_to_list(F), "(a, L). "]), 144: ok = file:write_file(File, B).