소스 검색

[add] 200以上的线程表示当前线程

feat_rtthread_MCoreDump
huangyulong 1 개월 전
부모
커밋
1961b1b71c
2개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 8
    0
      Middlewares/MCoreDump/coredump.c
  2. 1
    1
      Middlewares/MCoreDump/rtthread_port.c

+ 8
- 0
Middlewares/MCoreDump/coredump.c 파일 보기

@@ -254,9 +254,17 @@ void mcd_gen_coredump(struct thread_info_ops *ops)
254 254
         m_ctx.writeout_func((uint8_t *)&m_ctx.tmp.program_header, sizeof(elf_phdr_t));
255 255
     }
256 256
 
257
+    int cur_index = ops->get_current_thread_idx(ops);
258
+    ops->get_thread_regset(ops, cur_index,
259
+                               &m_ctx.tmp_core_rset, &m_ctx.tmp_fp_rset);
260
+    fill_one_threads_regset(&m_ctx.tmp_core_rset, &m_ctx.tmp_fp_rset);
261
+
257 262
     /* Write all threads in index order */
258 263
     for (int i = 0; i < ops->get_threads_count(ops); i++)
259 264
     {
265
+        if (cur_index == i)
266
+            continue;
267
+
260 268
         ops->get_thread_regset(ops, i,
261 269
                                &m_ctx.tmp_core_rset, &m_ctx.tmp_fp_rset);
262 270
         fill_one_threads_regset(&m_ctx.tmp_core_rset, &m_ctx.tmp_fp_rset);

+ 1
- 1
Middlewares/MCoreDump/rtthread_port.c 파일 보기

@@ -248,7 +248,7 @@ static int mcd_print_coredump_info_string(struct thread_info_ops *ops)
248 248
                     memlen = thread->stack_size;
249 249
                 }
250 250
 
251
-                mcd_print("Thread index:%d (fpu:%d)\n", idx_l + 1, fpu_flag);
251
+                mcd_print("Thread index:%d (fpu:%d)\n", 200 + idx_l + 1, fpu_flag);
252 252
                 print_registers((void *)get_cur_core_regset_address(), get_cur_fp_regset_address(), thread->name);
253 253
                 addr2line_cmd_with_pc_print((rt_uint32_t *)get_cur_core_regset_address()->pc, (uint32_t *)addr, memlen);
254 254
             }

Loading…
취소
저장