summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Gudmundsson <dgud@erlang.org>2023-03-07 15:02:55 +0100
committerDan Gudmundsson <dgud@erlang.org>2023-03-14 10:10:21 +0100
commite1a5238f4ca16a03f428bd0566d4e767a9a16326 (patch)
tree0b9e50b136aa14cb9091794c328851a8d0a168b5
parentd4e7154eda585843d05b8690e742b302cf6b6abe (diff)
downloaderlang-e1a5238f4ca16a03f428bd0566d4e767a9a16326.tar.gz
wx: Improve debug printouts
Remove printouts of large binaries.
-rw-r--r--lib/wx/c_src/wxe_impl.cpp30
-rw-r--r--lib/wx/c_src/wxe_impl.h3
-rw-r--r--lib/wx/c_src/wxe_return.cpp7
3 files changed, 31 insertions, 9 deletions
diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp
index a32e09db01..48c5bd2f4c 100644
--- a/lib/wx/c_src/wxe_impl.cpp
+++ b/lib/wx/c_src/wxe_impl.cpp
@@ -120,20 +120,36 @@ void send_msg(const char * type, const wxString * msg) {
rt.send(emsg);
}
+void wx_print_term(ErlNifEnv * env, ERL_NIF_TERM t)
+{
+ if(enif_is_binary(env, t)) {
+ ErlNifBinary bin;
+ enif_inspect_binary(env, t, &bin);
+ if(bin.size > 128) {
+ enif_fprintf(stderr, "<<...LARGE BIN>");
+ } else {
+ enif_fprintf(stderr, "%T", t);
+ }
+ } else {
+ enif_fprintf(stderr, "%T", t);
+ }
+}
+
+
+
void print_cmd(wxeCommand& event)
{
int i;
wxe_fns_t *func = &wxe_fns[event.op];
enif_fprintf(stderr, " %T %d %s::%s(", event.caller, event.op, func->cname, func->fname);
- for(i=0; i < event.argc-1; i++) {
- enif_fprintf(stderr, "%T,", event.args[i]);
- }
- if(i > 0) {
- enif_fprintf(stderr, "%T)\r\n", event.args[i]);
- } else {
- enif_fprintf(stderr, ")\r\n");
+ for(i=0; i < event.argc; i++) {
+ wx_print_term(event.env, event.args[i]);
+ if(i < event.argc - 1)
+ enif_fprintf(stderr, ", ");
}
+ enif_fprintf(stderr, ")\r\n");
}
+
/* ************************************************************
* Init WxeApp the application emulator
diff --git a/lib/wx/c_src/wxe_impl.h b/lib/wx/c_src/wxe_impl.h
index ee8654d1ef..45e80a77d1 100644
--- a/lib/wx/c_src/wxe_impl.h
+++ b/lib/wx/c_src/wxe_impl.h
@@ -115,4 +115,7 @@ typedef struct {
extern wxe_fns_t wxe_fns[];
+void wx_print_term(ErlNifEnv * env, ERL_NIF_TERM t);
+
+
#endif //_WXE_IMPL_H
diff --git a/lib/wx/c_src/wxe_return.cpp b/lib/wx/c_src/wxe_return.cpp
index 7d2e072561..621e39f16b 100644
--- a/lib/wx/c_src/wxe_return.cpp
+++ b/lib/wx/c_src/wxe_return.cpp
@@ -43,8 +43,11 @@ wxeReturn::~wxeReturn () {
int wxeReturn::send(ERL_NIF_TERM msg) {
int res;
if(wxe_debug) {
- if(isResult)
- enif_fprintf(stderr, "return to %T: %T\r\n", caller, msg);
+ if(isResult) {
+ enif_fprintf(stderr, "return to %T: ", caller);
+ wx_print_term(env, msg);
+ enif_fprintf(stderr, "\r\n");
+ }
}
if(isResult) {
res = enif_send(NULL, &caller, env,