diff --git a/include/dap_common.h b/include/dap_common.h
index 6f58c44f0a6565ed478394465a636cdc2df1ff3f..d84e945c9844b9f7cae7ad61b927873b16cd8d39 100755
--- a/include/dap_common.h
+++ b/include/dap_common.h
@@ -327,8 +327,11 @@ DAP_STATIC_INLINE void DAP_AtomicUnlock( dap_spinlock_t *lock )
     __sync_lock_release( lock );
 }
 
-extern char s_sys_dir_path[MAX_PATH];
-extern unsigned int l_sys_dir_path_len;
+
+
+char *g_sys_dir_path ;
+size_t g_sys_dir_path_len;
+
 
 //int dap_common_init( const char * a_log_file );
 int dap_common_init( const char *console_title, const char *a_log_file );
@@ -354,9 +357,11 @@ void _log_it2( const char *log_tag, enum dap_log_level ll, const char *fmt,... )
 const char * log_error(void);
 void dap_log_level_set(enum dap_log_level ll);
 enum dap_log_level dap_log_level_get(void);
-
 void dap_set_log_tag_width(size_t width);
 
+const char * dap_get_appname();
+void dap_set_appname(const char * a_appname);
+
 char *dap_itoa(int i);
 
 int dap_time_to_str_rfc822(char * out, size_t out_size_max, time_t t);
diff --git a/src/dap_common.c b/src/dap_common.c
index 1f6988152caa1b07ac2dbbd197d553f66156a342..00906d27e025f8133d2fcb2fd8713cf4f6e7ed44 100755
--- a/src/dap_common.c
+++ b/src/dap_common.c
@@ -135,8 +135,8 @@ static unsigned int s_ansi_seq_color_len[16] = {0};
 #endif
 
 static volatile bool s_log_term_signal = false;
-unsigned int l_sys_dir_path_len = 0;
-char s_sys_dir_path[MAX_PATH] = {'\0'};
+char* g_sys_dir_path = NULL;
+size_t g_sys_dir_path_len = 0;
 
 static char s_last_error[LAST_ERROR_MAX]    = {'\0'},
     s_log_file_path[MAX_PATH]               = {'\0'},
@@ -163,6 +163,7 @@ typedef struct log_str_t {
 } log_str_t;
 
 static log_str_t *log_buffer = NULL;
+static char* s_appname = NULL;
 
 DAP_STATIC_INLINE void s_update_log_time(char *a_datetime_str) {
     time_t t = time(NULL);
@@ -178,6 +179,26 @@ void dap_log_level_set( enum dap_log_level a_ll ) {
     dap_log_level = a_ll;
 }
 
+/**
+ * @brief dap_get_appname
+ * @return
+ */
+const char * dap_get_appname()
+{
+    return s_appname?s_appname: "dap";
+}
+
+/**
+ * @brief dap_set_appname
+ * @param a_appname
+ * @return
+ */
+void dap_set_appname(const char * a_appname)
+{
+    s_appname = dap_strdup(a_appname);
+
+}
+
 enum dap_log_level dap_log_level_get( void ) {
     return dap_log_level ;
 }