⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptt_glibc-2.4.patch

📁 linux下的多线程调试工具
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
+#define PTT_TRACE_INTERNALS(x,...)+#else /* PTT_DBG != PTT_DBG_NONE */+#define PTT_TRACE_INTERNALS(level,...)  \+    if (level & PTT_DBG) fprintf (stderr, __VA_ARGS__)+#endif /* PTT_DBG != PTT_DBG_NONE */++#endif /* PTT_DEBUG_H */+#endif /* PTT_NEW_FILES */+diff -Naur ori_glibc/nptl/ptt_module.c new_glibc/nptl/ptt_module.c--- ori_glibc/nptl/ptt_module.c	1970-01-01 01:00:00.000000000 +0100+++ new_glibc/nptl/ptt_module.c	2006-06-22 14:48:19.000000000 +0200@@ -0,0 +1,510 @@+/* Copyright (C) 2004,2005,2006  Bull S.A.+ *+ * This library is free software; you can redistribute it and/or+ * modify it under the terms of the GNU Lesser General Public+ * License as published by the Free Software Foundation; either+ * version 2.1 of the License, or (at your option) any later version.+ *+ * This library is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU+ * Lesser General Public License for more details.+ *+ * You should have received a copy of the GNU Lesser General Public+ * License along with this library; if not, write to the Free Software+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA+ */++/* PTT module to initialize PTT and write trace points in a shared buffer */++#ifdef PTT_NEW_FILES++#define _XOPEN_SOURCE 500++#include "ptt_types.h"+#include "ptt_trace.h"+#include "ptt_debug.h"+#include "pthreadP.h"+#include <stdio.h>+#include <stdlib.h>+#include <unistd.h>+#include <fcntl.h>+#include <stdarg.h>+#include <assert.h>+#include <pthread.h>+#include <sys/types.h>+#include <sys/mman.h>+#include <libc-symbols.h>+#include <atomic.h>+#include <hp-timing.h>++struct ptt_buffer* ptt_buf;+pid_t attribute_hidden ptt_trace_pid;++ptt_point_data_t attribute_hidden ptt_point_array[] = {+#if __WORDSIZE == 64+    {{}, 0, 7},                                                 /* NULL */+    {{PTT_UINT}, 1, 8},                                         /* INIT */+    {{}, 0, 7},                                                 /* FINI */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* BAR_1 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* BAR_2 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* BAR_3 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* BAR_4 */+    {{PTT_PTR, PTT_PTR, PTT_UINT}, 3, 12},                      /* BAR_5 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* BAR_6 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* BAR_7 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* BAR_8 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* BAR_9 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* BAR_10 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* BAR_11 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* BAR_12 */+    {{PTT_PTR}, 1, 9},                                          /* BAR_13 */+    {{PTT_PTR}, 1, 9},                                          /* BAR_14 */+    {{PTT_PTR}, 1, 9},                                          /* BAR_15 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* COND_1 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_2 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_3 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_4 */+    {{PTT_PTR, PTT_ULL}, 2, 11},                                /* COND_5 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_6 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_7 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* COND_8 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* COND_9 */+    {{PTT_PTR, PTT_PTR, PTT_ULL, PTT_UINT, PTT_PTR, PTT_INT}, 6, 17},+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 14},              /* COND_11 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_12 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* COND_13 */+    {{PTT_PTR, PTT_ULL}, 2, 11},                                /* COND_14 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_15 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* COND_16 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 14},              /* COND_17 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* COND_18 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* COND_19 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_20 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* COND_21 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_22 */+    {{PTT_PTR}, 1, 9},                                          /* COND_23 */+    {{PTT_PTR}, 1, 9},                                          /* COND_24 */+    {{PTT_PTR}, 1, 9},                                          /* MTX_1 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_2 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* MTX_3 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* MTX_4 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_5 */+    {{PTT_PTR, PTT_UINT, PTT_INT, PTT_INT, PTT_PTR, PTT_INT}, 6, 15},+    {{PTT_PTR}, 1, 9},                                          /* MTX_7 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_8 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* MTX_9 */+    {{PTT_PTR, PTT_INT, PTT_PTR}, 3, 12},                       /* MTX_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* MTX_11 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* MTX_12 */+    {{PTT_PTR, PTT_INT, PTT_PTR, PTT_INT}, 4, 13},              /* MTX_13 */+    {{PTT_PTR}, 1, 9},                                          /* MTX_14 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_15 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* MTX_16 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_17 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_18 */+    {{}, 0, 7},                                                 /* THR_1 */+    {{}, 0, 7},                                                 /* THR_2 */+    {{}, 0, 7},                                                 /* THR_3 */+    {{PTT_PTR}, 1, 9},                                          /* THR_4 */+    {{PTT_INT}, 1, 8},                                          /* THR_5 */+    {{PTT_PTR}, 1, 9},                                          /* THR_6 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* THR_7 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_PTR}, 4, 15},              /* THR_8 */+    {{PTT_INT}, 1, 8},                                          /* THR_9 */+    {{PTT_PTR}, 1, 9},                                          /* THR_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* THR_11 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* THR_12 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* THR_13 */+    {{PTT_INT}, 1, 8},                                          /* THR_14 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* THR_15 */+    {{PTT_INT}, 1, 8},                                          /* FORK */+    {{PTT_PTR, PTT_INT, PTT_UINT}, 3, 11},                      /* SEM_1 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_2 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* SEM_3 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 14},              /* SEM_4 */+    {{PTT_PTR, PTT_PTR, PTT_UINT}, 3, 12},                      /* SEM_5 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_6 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_7 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* SEM_8 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_9 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* SEM_10 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_11 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_12 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_13 */+    {{}, 0, 7},                                                 /* SEM_14 */+    {{PTT_INT}, 1, 8},                                          /* SEM_15 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* SEM_16 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_17 */+    {{}, 0, 7},                                                 /* SEM_18 */+    {{}, 0, 7},                                                 /* SEM_19 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* SEM_20 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* SEM_21 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_22 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* SEM_23 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_24 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_25 */+    {{PTT_UINT, PTT_INT}, 2, 9},                                /* SEM_26 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_27 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_28 */+#else /* __WORDSIZE != 64 */+    {{}, 0, 6},                                                 /* NULL */+    {{PTT_UINT}, 1, 7},                                         /* INIT */+    {{}, 0, 6},                                                 /* FINI */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* BAR_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_2 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_3 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_4 */+    {{PTT_PTR, PTT_PTR, PTT_UINT}, 3, 9},                       /* BAR_5 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_6 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* BAR_7 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* BAR_8 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* BAR_9 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* BAR_10 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* BAR_11 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_12 */+    {{PTT_PTR}, 1, 7},                                          /* BAR_13 */+    {{PTT_PTR}, 1, 7},                                          /* BAR_14 */+    {{PTT_PTR}, 1, 7},                                          /* BAR_15 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_2 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_3 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_4 */+    {{PTT_PTR, PTT_ULL}, 2, 9},                                 /* COND_5 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_6 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_7 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_8 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* COND_9 */+    {{PTT_PTR, PTT_PTR, PTT_ULL, PTT_UINT, PTT_PTR, PTT_INT}, 6, 13},+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 10},              /* COND_11 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_12 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* COND_13 */+    {{PTT_PTR, PTT_ULL}, 2, 9},                                 /* COND_14 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_15 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* COND_16 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 10},              /* COND_17 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_18 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* COND_19 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_20 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_21 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_22 */+    {{PTT_PTR}, 1, 7},                                          /* COND_23 */+    {{PTT_PTR}, 1, 7},                                          /* COND_24 */+    {{PTT_PTR}, 1, 7},                                          /* MTX_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_2 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* MTX_3 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* MTX_4 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_5 */+    {{PTT_PTR, PTT_UINT, PTT_INT, PTT_INT, PTT_PTR, PTT_INT}, 6, 12},+    {{PTT_PTR}, 1, 7},                                          /* MTX_7 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_8 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* MTX_9 */+    {{PTT_PTR, PTT_INT, PTT_PTR}, 3, 9},                        /* MTX_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* MTX_11 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* MTX_12 */+    {{PTT_PTR, PTT_INT, PTT_PTR, PTT_INT}, 4, 10},              /* MTX_13 */+    {{PTT_PTR}, 1, 7},                                          /* MTX_14 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_15 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* MTX_16 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_17 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_18 */+    {{}, 0, 6},                                                 /* THR_1 */+    {{}, 0, 6},                                                 /* THR_2 */+    {{}, 0, 6},                                                 /* THR_3 */+    {{PTT_PTR}, 1, 7},                                          /* THR_4 */+    {{PTT_INT}, 1, 7},                                          /* THR_5 */+    {{PTT_PTR}, 1, 7},                                          /* THR_6 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* THR_7 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_PTR}, 4, 10},              /* THR_8 */+    {{PTT_INT}, 1, 7},                                          /* THR_9 */+    {{PTT_PTR}, 1, 7},                                          /* THR_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* THR_11 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* THR_12 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* THR_13 */+    {{PTT_INT}, 1, 7},                                          /* THR_14 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* THR_15 */+    {{PTT_INT}, 1, 7},                                          /* FORK */+    {{PTT_PTR, PTT_INT, PTT_UINT}, 3, 9},                       /* SEM_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_2 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* SEM_3 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 10},              /* SEM_4 */+    {{PTT_PTR, PTT_PTR, PTT_UINT}, 3, 9},                       /* SEM_5 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_6 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_7 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* SEM_8 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_9 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* SEM_10 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_11 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_12 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_13 */+    {{}, 0, 6},                                                 /* SEM_14 */+    {{PTT_INT}, 1, 7},                                          /* SEM_15 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* SEM_16 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_17 */+    {{}, 0, 6},                                                 /* SEM_18 */+    {{}, 0, 6},                                                 /* SEM_19 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* SEM_20 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* SEM_21 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_22 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* SEM_23 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_24 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_25 */+    {{PTT_UINT, PTT_INT}, 2, 8},                                /* SEM_26 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_27 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_28 */+#endif /* __WORDSIZE == 64 */+};++#define PTT_VERS_MAJOR 1+#define PTT_VERS_MINOR 0++#define PTT_FILE_LEN 255++#if HP_TIMING_AVAIL == 0+#error no hp-timing+#endif /* HP_TIMING_AVAIL == 0 */+#define PTT_GET_TIME(time) HP_TIMING_NOW(time)++#define PTT_SIZE (ptt_buf->size_buff)+#define PTT_SZ_WORD (sizeof(PTT_WORD))++/* write data in an array and increment the index */+#define PTT_WR_32(arg,deb,tab,sum)                      \+({sum ^= tab[(deb)%(PTT_SIZE)] = (PTT_WORD)(arg);       \+  (deb)++;})+#define PTT_WR_64(arg,deb,tab,sum)                      \+({sum ^= tab[(deb)%(PTT_SIZE)] =                        \+  (PTT_WORD)((unsigned long long)(arg) & 0xffffffff);   \+  (deb)++;                                              \+  sum ^= tab[(deb)%(PTT_SIZE)] =                        \+  (PTT_WORD)((unsigned long long)(arg) >> 32);          \+  (deb)++;})+/* trace point name */+#define PTT_WR_NAME(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+/* integer data */+#define PTT_WR_INT(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+/* pointer data */			    +#if __WORDSIZE == 64+#define PTT_WR_PTR(arg,deb,tab,sum) PTT_WR_64(arg,deb,tab,sum)+#else /* __WORDSIZE != 64 */+#define PTT_WR_PTR(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+#endif /* __WORDSIZE == 64 */+/* unsigned integer data */			   +#define PTT_WR_UINT(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+/* unsigned long long data */	+#define PTT_WR_ULL(arg,deb,tab,sum) PTT_WR_64(arg,deb,tab,sum)+/* time (unsigned long long) */+#define PTT_WR_TIME(arg,deb,tab,sum) PTT_WR_64(arg,deb,tab,sum)+/* check_sum (integer) */ 				+#define PTT_WR_CHECK(arg,deb,tab)           \+({tab[(deb)%(PTT_SIZE)] = (PTT_WORD)(arg);  \+  deb++;})++/* If NPTL is initialized while PTT daemon is not running, trace mechanism is+ * disabled.+ * PTT daemon initializes the shared buffer (shared memory object called+ * ptt_[daemon_pid] with [daemon_pid]==[daemon_pgid]). So, if this shared+ * buffer doesn't exists (no shared memory object ptt_[pgid]), PTT daemon is+ * not running, and therefore trace mechanism is disabled.+ */+void attribute_hidden ptt_init_nptl (void)+{+    char region[PTT_FILE_LEN]; /* name of the shared memory */+    int fd;++    snprintf (region, sizeof (region), "/ptt_%d", getpgid (0));+    if ((fd = shm_open (region, O_RDWR, S_IRUSR | S_IWUSR)) == -1) {+        PTT_TRACE_INTERNALS (PTT_DBG_GENERAL, "PTT daemon is not running: "+                             "trace mechanism disabled\n");+        ptt_buf 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -