Commit 99986be0b9c540317da421312a0faaf26b34617a
1 parent
a26cc869
Exists in
master
Incluindo mecanismo para geração de arquivo de trace com as chamadas da API.
Showing
9 changed files
with
58 additions
and
1 deletions
Show diff stats
configure.ac
... | ... | @@ -335,6 +335,15 @@ if test "$app_cv_pic" == "yes"; then |
335 | 335 | fi |
336 | 336 | |
337 | 337 | dnl --------------------------------------------------------------------------- |
338 | +dnl Enable/Disable trace file | |
339 | +dnl --------------------------------------------------------------------------- | |
340 | +AC_ARG_ENABLE([trace],[AS_HELP_STRING([--enable-trace], [Enable creation of trace file])],[app_cv_trace="$enableval"],[app_cv_trace="no"]) | |
341 | + | |
342 | +if test "$app_cv_trace" == "yes"; then | |
343 | + AC_DEFINE(ENABLE_TRACE_TO_FILE) | |
344 | +fi | |
345 | + | |
346 | +dnl --------------------------------------------------------------------------- | |
338 | 347 | dnl Output config |
339 | 348 | dnl --------------------------------------------------------------------------- |
340 | 349 | ... | ... |
pw3270-sharp.cbp
src/include/config.h.in
src/native/Makefile.in
src/native/get.cc
src/native/init.cc
... | ... | @@ -42,6 +42,9 @@ |
42 | 42 | * |
43 | 43 | */ |
44 | 44 | h3270::session * tn3270_create_session(const char *name) { |
45 | + | |
46 | + trace_to_file("%s(%s)",__FUNCTION__,name ? name : ""); | |
47 | + | |
45 | 48 | try { |
46 | 49 | return h3270::session::create(name); |
47 | 50 | } catch(std::exception &e) { |
... | ... | @@ -55,6 +58,9 @@ |
55 | 58 | * |
56 | 59 | */ |
57 | 60 | int tn3270_destroy_session(h3270::session *ses) { |
61 | + | |
62 | + trace_to_file("%s",__FUNCTION__); | |
63 | + | |
58 | 64 | try { |
59 | 65 | delete ses; |
60 | 66 | } catch(std::exception &e) { |
... | ... | @@ -64,3 +70,23 @@ |
64 | 70 | return 0; |
65 | 71 | } |
66 | 72 | |
73 | +#ifdef ENABLE_TRACE_TO_FILE | |
74 | + void write_trace(const char *fmt, ...) { | |
75 | + | |
76 | + FILE *trace = fopen(PACKAGE_NAME ".trace","a"); | |
77 | + if(trace) { | |
78 | + va_list arg_ptr; | |
79 | + va_start(arg_ptr, fmt); | |
80 | + vfprintf(trace, fmt, arg_ptr); | |
81 | + fprintf(trace,"\n"); | |
82 | + va_end(arg_ptr); | |
83 | + fclose(trace); | |
84 | + } | |
85 | +#ifdef DEBUG | |
86 | + else { | |
87 | + perror(PACKAGE_NAME ".trace"); | |
88 | + } | |
89 | +#endif // DEBUG | |
90 | + | |
91 | + } | |
92 | +#endif // ENABLE_TRACE_TO_FILE | ... | ... |
src/native/private.h
... | ... | @@ -35,6 +35,8 @@ |
35 | 35 | |
36 | 36 | #define PRIVATE_H_INCLUDED |
37 | 37 | |
38 | + #include <config.h> | |
39 | + | |
38 | 40 | #if defined(_WIN32) |
39 | 41 | |
40 | 42 | #include <windows.h> |
... | ... | @@ -63,6 +65,13 @@ |
63 | 65 | #define debug( fmt, ... ) /* */ |
64 | 66 | #endif // DEBUG |
65 | 67 | |
68 | + #ifdef ENABLE_TRACE_TO_FILE | |
69 | + DLL_PRIVATE void write_trace(const char *fmt, ...); | |
70 | + #define trace_to_file( ... ) write_trace(__VA_ARGS__) | |
71 | + #else | |
72 | + #define trace( ... ) /* */ | |
73 | + #endif // ENABLE_TRACE_TO_FILE | |
74 | + | |
66 | 75 | #include <pw3270cpp.h> |
67 | 76 | #include <cerrno> |
68 | 77 | #include <cstring> | ... | ... |
src/native/screen.cc
... | ... | @@ -70,6 +70,7 @@ int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int s |
70 | 70 | try { |
71 | 71 | memset(str,0,sz+1); |
72 | 72 | strncpy(str,ses->get_string_at(row,col,sz).c_str(),sz); |
73 | + trace_to_file("%s(%d,%d,%d):\n%s\n",__FUNCTION__,row,col,sz,str); | |
73 | 74 | } catch(std::exception &e) { |
74 | 75 | tn3270_lasterror = e.what(); |
75 | 76 | return -1; |
... | ... | @@ -79,6 +80,7 @@ int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int s |
79 | 80 | |
80 | 81 | int tn3270_set_string_at(h3270::session *ses, int row, int col, const char* str) { |
81 | 82 | try { |
83 | + trace_to_file("%s(%d,%d):\n%s\n",__FUNCTION__,row,col,str); | |
82 | 84 | debug("%s(%d,%d,\"%s\")",__FUNCTION__,row,col,str); |
83 | 85 | ses->set_string_at(row,col,str); |
84 | 86 | } catch(std::exception &e) { | ... | ... |
src/native/set.cc
... | ... | @@ -63,6 +63,7 @@ int tn3270_set_cursor_addr(h3270::session *ses, int addr) { |
63 | 63 | |
64 | 64 | int tn3270_set_charset(h3270::session *ses, const char* str) { |
65 | 65 | try { |
66 | + trace_to_file("%s: \"%s\" -> \"%s\"",__FUNCTION__,ses->get_display_charset().c_str(),str); | |
66 | 67 | ses->set_display_charset(NULL, str); |
67 | 68 | } catch(std::exception &e) { |
68 | 69 | tn3270_lasterror = e.what(); | ... | ... |