debugging

This commit is contained in:
Vitor Santos Costa 2019-05-20 08:25:50 +01:00
parent 69dc2a963c
commit 52da71cee7
5 changed files with 199 additions and 94 deletions

View File

@ -1,3 +1,4 @@
/*************************************************************************
* *
* YAP Prolog *
@ -1319,6 +1320,7 @@ restart_aux:
cut_fail();
}
static Int atom_concat2(USES_REGS1) {
Term t1;
Term *tailp;

122
C/cdmgr.c
View File

@ -4276,104 +4276,104 @@ static Int init_pred_flag_vals(USES_REGS1) {
void Yap_InitCdMgr(void) {
CACHE_REGS
Yap_InitCPred("$init_pred_flag_vals", 2, init_pred_flag_vals, SyncPredFlag);
Yap_InitCPred("$init_pred_flag_vals", 2, init_pred_flag_vals, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$start_consult", 3, p_startconsult,
SafePredFlag | SyncPredFlag);
Yap_InitCPred("$show_consult_level", 1, p_showconslultlev, SafePredFlag);
Yap_InitCPred("$end_consult", 0, p_endconsult, SafePredFlag | SyncPredFlag);
Yap_InitCPred("$set_spy", 2, p_setspy, SyncPredFlag);
Yap_InitCPred("$rm_spy", 2, p_rmspy, SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$show_consult_level", 1, p_showconslultlev, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$end_consult", 0, p_endconsult, SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$set_spy", 2, p_setspy, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$rm_spy", 2, p_rmspy, SafePredFlag | SyncPredFlag| NoTracePredFlag);
/* gc() may happen during compilation, hence these predicates are
now unsafe */
Yap_InitCPred("$predicate_flags", 4, predicate_flags, SyncPredFlag);
Yap_InitCPred("$compile", 5, p_compile, SyncPredFlag);
Yap_InitCPred("$predicate_flags", 4, predicate_flags, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$compile", 5, p_compile, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$purge_clauses", 2, p_purge_clauses,
SafePredFlag | SyncPredFlag);
Yap_InitCPred("$is_dynamic", 2, p_is_dynamic, TestPredFlag | SafePredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$is_dynamic", 2, p_is_dynamic, TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_metapredicate", 2, p_is_metapredicate,
TestPredFlag | SafePredFlag);
TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_log_updatable", 2, p_is_log_updatable,
TestPredFlag | SafePredFlag);
TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_thread_local", 2, p_is_thread_local,
TestPredFlag | SafePredFlag);
Yap_InitCPred("$is_source", 2, p_is_source, TestPredFlag | SafePredFlag);
Yap_InitCPred("$is_exo", 2, p_is_exo, TestPredFlag | SafePredFlag);
Yap_InitCPred("$owner_file", 3, owner_file, SafePredFlag);
Yap_InitCPred("$set_owner_file", 3, p_set_owner_file, SafePredFlag);
Yap_InitCPred("$mk_dynamic", 2, mk_dynamic, SafePredFlag);
Yap_InitCPred("$new_meta_pred", 2, new_meta_pred, SafePredFlag);
Yap_InitCPred("$sys_export", 2, p_sys_export, TestPredFlag | SafePredFlag);
Yap_InitCPred("$pred_exists", 2, p_pred_exists, TestPredFlag | SafePredFlag);
TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_source", 2, p_is_source, TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_exo", 2, p_is_exo, TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$owner_file", 3, owner_file, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$set_owner_file", 3, p_set_owner_file, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$mk_dynamic", 2, mk_dynamic, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$new_meta_pred", 2, new_meta_pred, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$sys_export", 2, p_sys_export, TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$pred_exists", 2, p_pred_exists, TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$number_of_clauses", 3, number_of_clauses,
SafePredFlag | SyncPredFlag);
Yap_InitCPred("$undefined", 2, p_undefined, SafePredFlag | TestPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$undefined", 2, p_undefined, SafePredFlag | TestPredFlag| NoTracePredFlag);
Yap_InitCPred("$undefp_handler", 2, undefp_handler,
SafePredFlag | TestPredFlag);
SafePredFlag | TestPredFlag| NoTracePredFlag);
Yap_InitCPred("$optimizer_on", 0, p_optimizer_on,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$clean_up_dead_clauses", 0, p_clean_up_dead_clauses,
SyncPredFlag);
SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$optimizer_off", 0, p_optimizer_off,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$kill_dynamic", 2, p_kill_dynamic,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$new_multifile", 2, new_multifile,
SafePredFlag | SyncPredFlag | HiddenPredFlag);
SafePredFlag | SyncPredFlag | HiddenPredFlag| NoTracePredFlag);
Yap_InitCPred("$is_multifile", 2, p_is_multifile,
TestPredFlag | SafePredFlag);
TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$new_system_predicate", 3, new_system_predicate,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$is_system_predicate", 2, is_system_predicate,
TestPredFlag | SafePredFlag);
TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_opaque_predicate", 2, is_opaque_predicate,
TestPredFlag | SafePredFlag);
TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$new_discontiguous", 3, p_new_discontiguous,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$is_discontiguous", 2, p_is_discontiguous,
TestPredFlag | SafePredFlag);
Yap_InitCPred("$is_private", 2, p_is_private, TestPredFlag | SafePredFlag);
TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_private", 2, p_is_private, TestPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$set_private", 2, p_set_private,
SyncPredFlag | SafePredFlag);
Yap_InitCPred("$is_profiled", 1, p_is_profiled, SafePredFlag | SyncPredFlag);
SyncPredFlag | SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$is_profiled", 1, p_is_profiled, SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$profile_info", 3, p_profile_info,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$profile_reset", 2, p_profile_reset,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$is_call_counted", 1, p_is_call_counted,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$call_count_info", 3, p_call_count_info,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$call_count_set", 6, p_call_count_set,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$call_count_reset", 0, p_call_count_reset,
SafePredFlag | SyncPredFlag);
Yap_InitCPred("$set_pred_module", 2, p_set_pred_module, SafePredFlag);
Yap_InitCPred("$set_pred_owner", 2, p_set_pred_owner, SafePredFlag);
Yap_InitCPred("$hide_predicate", 2, hide_predicate, SafePredFlag);
Yap_InitCPred("$stash_predicate", 2, stash_predicate, SafePredFlag);
Yap_InitCPred("$hidden_predicate", 2, hidden_predicate, SafePredFlag);
Yap_InitCPred("$log_update_clause", 4, p_log_update_clause, SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$set_pred_module", 2, p_set_pred_module, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$set_pred_owner", 2, p_set_pred_owner, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$hide_predicate", 2, hide_predicate, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$stash_predicate", 2, stash_predicate, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$hidden_predicate", 2, hidden_predicate, SafePredFlag| NoTracePredFlag);
Yap_InitCPred("$log_update_clause", 4, p_log_update_clause, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$continue_log_update_clause", 5, p_continue_log_update_clause,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$log_update_clause_erase", 4, p_log_update_clause_erase,
SyncPredFlag);
SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$continue_log_update_clause_erase", 5,
p_continue_log_update_clause_erase,
SafePredFlag | SyncPredFlag);
Yap_InitCPred("$static_clause", 4, p_static_clause, SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$static_clause", 4, p_static_clause, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$continue_static_clause", 5, p_continue_static_clause,
SafePredFlag | SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$static_pred_statistics", 5, p_static_pred_statistics,
SyncPredFlag);
SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("instance_property", 3, instance_property,
SafePredFlag | SyncPredFlag);
Yap_InitCPred("$fetch_nth_clause", 4, p_nth_instance, SyncPredFlag);
SafePredFlag | SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$fetch_nth_clause", 4, p_nth_instance, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$predicate_erased_statistics", 5,
p_predicate_erased_statistics, SyncPredFlag);
Yap_InitCPred("$including", 2, including, SyncPredFlag | HiddenPredFlag);
p_predicate_erased_statistics, SyncPredFlag| NoTracePredFlag);
Yap_InitCPred("$including", 2, including, SyncPredFlag | HiddenPredFlag| NoTracePredFlag);
#ifdef DEBUG
Yap_InitCPred("$predicate_lu_cps", 4, p_predicate_lu_cps, 0L);
Yap_InitCPred("$predicate_lu_cps", 4, p_predicate_lu_cps, 0L| NoTracePredFlag);
#endif
}

View File

@ -2467,20 +2467,20 @@ void Yap_InitExecFs(void) {
Term cm = CurrentModule;
Yap_InitComma();
Yap_InitCPred("$execute", 1, execute, 0);
Yap_InitCPred("$execute", 2, execute2, 0);
Yap_InitCPred("$execute", 3, execute3, 0);
Yap_InitCPred("$execute", 4, execute4, 0);
Yap_InitCPred("$execute", 5, execute5, 0);
Yap_InitCPred("$execute", 6, execute6, 0);
Yap_InitCPred("$execute", 7, execute7, 0);
Yap_InitCPred("$execute", 8, execute8, 0);
Yap_InitCPred("$execute", 9, execute9, 0);
Yap_InitCPred("$execute", 10, execute10, 0);
Yap_InitCPred("$execute", 11, execute11, 0);
Yap_InitCPred("$execute", 12, execute12, 0);
Yap_InitCPred("$execute_in_mod", 2, execute_in_mod, 0);
Yap_InitCPred("$execute_wo_mod", 2, execute_in_mod, 0);
Yap_InitCPred("$execute", 1, execute, NoTracePredFlag);
Yap_InitCPred("$execute", 2, execute2, NoTracePredFlag);
Yap_InitCPred("$execute", 3, execute3, NoTracePredFlag);
Yap_InitCPred("$execute", 4, execute4, NoTracePredFlag);
Yap_InitCPred("$execute", 5, execute5, NoTracePredFlag);
Yap_InitCPred("$execute", 6, execute6, NoTracePredFlag);
Yap_InitCPred("$execute", 7, execute7, NoTracePredFlag);
Yap_InitCPred("$execute", 8, execute8, NoTracePredFlag);
Yap_InitCPred("$execute", 9, execute9, NoTracePredFlag);
Yap_InitCPred("$execute", 10, execute10, NoTracePredFlag);
Yap_InitCPred("$execute", 11, execute11, NoTracePredFlag);
Yap_InitCPred("$execute", 12, execute12, NoTracePredFlag);
Yap_InitCPred("$execute_in_mod", 2, execute_in_mod, NoTracePredFlag);
Yap_InitCPred("$execute_wo_mod", 2, execute_in_mod, NoTracePredFlag);
Yap_InitCPred("call_with_args", 1, execute_0, 0);
Yap_InitCPred("call_with_args", 2, execute_1, 0);
Yap_InitCPred("call_with_args", 3, execute_2, 0);
@ -2493,16 +2493,17 @@ void Yap_InitExecFs(void) {
Yap_InitCPred("call_with_args", 10, execute_9, 0);
Yap_InitCPred("call_with_args", 11, execute_10, 0);
#ifdef DEPTH_LIMIT
Yap_InitCPred("$execute_under_depth_limit", 2, execute_depth_limit, 0);
Yap_InitCPred("$execute_under_depth_limit", 2, execute_depth_limit, NoTracePredFlag);
#endif
Yap_InitCPred("$execute0", 2, execute0, NoTracePredFlag);
Yap_InitCPred("$execute_nonstop", 2, execute_nonstop, NoTracePredFlag);
Yap_InitCPred("$execute_nonstop", 1, execute_nonstop1, NoTracePredFlag);
Yap_InitCPred("$creep_step", 2, creep_step, NoTracePredFlag);
Yap_InitCPred("$execute_clause", 4, execute_clause, NoTracePredFlag);
Yap_InitCPred("$creep_clause", 4, creep_clause, NoTracePredFlag);
Yap_InitCPred("$current_choice_point", 1, current_choice_point, 0);
Yap_InitCPred("$current_choicepoint", 1, current_choice_point, 0);
Yap_InitCPred("$creep_clause", 4, creep_clause, NoTracePredFlag);
Yap_InitCPred("$current_choice_point", 1, current_choice_point, NoTracePredFlag);
Yap_InitCPred("$current_choicepoint", 1, current_choice_point, NoTracePredFlag);
CurrentModule = HACKS_MODULE;
Yap_InitCPred("current_choice_point", 1, current_choice_point, 0);
Yap_InitCPred("current_choicepoint", 1, current_choice_point, 0);
@ -2515,20 +2516,20 @@ void Yap_InitExecFs(void) {
NoTracePredFlag | SafePredFlag);
Yap_InitCPred("$restore_regs", 2, restore_regs2,
NoTracePredFlag | SafePredFlag);
Yap_InitCPred("$clean_ifcp", 1, clean_ifcp, SafePredFlag);
Yap_InitCPred("$clean_ifcp", 1, clean_ifcp, NoTracePredFlag | SafePredFlag);
Yap_InitCPred("qpack_clean_up_to_disjunction", 0, cut_up_to_next_disjunction,
SafePredFlag);
Yap_InitCPred("throw", 1, jump_env, 0);
Yap_InitCPred("$generate_pred_info", 4, generate_pred_info, 0);
Yap_InitCPred("_user_expand_goal", 2, _user_expand_goal, 0);
Yap_InitCPred("$do_term_expansion", 2, do_term_expansion, 0);
Yap_InitCPred("$generate_pred_info", 4, generate_pred_info, NoTracePredFlag);
Yap_InitCPred("_user_expand_goal", 2, _user_expand_goal, NoTracePredFlag);
Yap_InitCPred("$do_term_expansion", 2, do_term_expansion, NoTracePredFlag);
Yap_InitCPred("$setup_call_catcher_cleanup", 1, setup_call_catcher_cleanup,
0);
NoTracePredFlag);
Yap_InitCPred("$cleanup_on_exit", 2, cleanup_on_exit, NoTracePredFlag);
Yap_InitCPred("$tag_cleanup", 2, tag_cleanup, 0);
Yap_InitCPred("$get_debugger_state", 2, get_debugger_state, 0);
Yap_InitCPred("$get_debugger_state", 4, get_debugger_state4, 0);
Yap_InitCPred("$set_debugger_state", 2, set_debugger_state, 0);
Yap_InitCPred("$set_debugger_state", 4, set_debugger_state4, 0);
Yap_InitCPred("$tag_cleanup", 2, tag_cleanup, NoTracePredFlag);
Yap_InitCPred("$get_debugger_state", 2, get_debugger_state, NoTracePredFlag);
Yap_InitCPred("$get_debugger_state", 4, get_debugger_state4, NoTracePredFlag);
Yap_InitCPred("$set_debugger_state", 2, set_debugger_state, NoTracePredFlag);
Yap_InitCPred("$set_debugger_state", 4, set_debugger_state4, NoTracePredFlag);
}

View File

@ -405,7 +405,6 @@ be lost.
'$creep'(G0, M0, _CP, H) :-
'$yap_strip_module'(M0:G0, M, G), % spy a literal
'$id_goal'(L),
'$current_choicepoint'(CP),
'$trace_goal'(G, M, CP,L).
@ -467,6 +466,7 @@ be lost.
'$enter_trace'(GoalNumber, G, M, H),
'$creep_is_off'(M:G, GoalNumber),
!,
'$id_goal'(GoalNumber),
gated_call(
'$set_debugger_state'(debug, false),
'$execute_nonstop'(G,M),
@ -476,6 +476,7 @@ be lost.
'$trace_goal'(G,M, GoalNumber, H) :-
'$is_source'(G,M),
!,
'$id_goal'(GoalNumber),
'$current_choice_point'(CP),
%clause generator: it controls fail, redo
gated_call(
@ -496,7 +497,9 @@ be lost.
!,
'$current_choice_point'(CP),
%clause generator: it controls fail, redo
'$id_goal'(GoalNumber),
gated_call(
% '$trace_port'([call], GoalNumber, G, M, H)
true,
'$static_clause'(G,M,_,Ref),
Port0,

View File

@ -1,4 +1,4 @@
/*************************************************************************
/*************************************************************************
* *
* YAP Prolog *
* *
@ -53,9 +53,8 @@ prolog:'$protect' :-
'$is_system_module'(M),
functor(P,Name,Arity),
\+ '$visible'(Name),
'$set_private'(P,M),
fail.
prolog:'$protect' :-
'$set_private'(P,M),
:'$protect' :-
current_atom(Name),
sub_atom(Name,0,1,_, '$'),
\+ '$visible'(Name),
@ -95,5 +94,105 @@ prolog:'$protect'.
'$visible'('$live').
'$visible'('$init_prolog').
'$visible'('$x_yap_flag' ).
'$visible'(X) :- \+ atomic_concat('$',_,X).
%% @}