ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
1191594
klen (23.03.2022 21:07, просмотров: 445)
патч для тех кто использует Black Magic Debug Probe и наисвежайшие ревизии GDB 

0. я использую это чудо

https://github.com/blackmagic-debug/blackmagic/wiki

уже давно давно, и с презрением смотрю на ж-линки и прочие оковы разума.

1. еще в октябре прошлого года было сломано в коде 11.2, при выполнении attach отдадчик падал. 11.1 не имеет такого бага.

2. баг связан с сильными изменениями кода в remote debug из за рефакторинга. связанного с добавлением в отладку "мелких таргетов" общего механизма потоков. это связано с тем что теперь даже сраный микроконтроллер умеет запустить FreeRTOS и более связан с тем фактом, что многие не сраные микроконтроллеры начинают имеют ядер чуть более чем один! однако ж границы стираются!

3. ваш покорный слуга приложил немного к этому руку... огромное спасибо старому знакомому John Whittington <git@jbrengineering.co.uk>

4. собственно патч кому это зайдет... работает на коде 11.2 и выше включая транк

gdb/remote.c
@@ -2545,12 +2545,16 @@ remote_target::remote_add_thread (ptid_t ptid, bool running, bool executing,
  else
    thread = add_thread (this, ptid);

+  /* switch to thread now if bare-metal target because otherwise it will assert as null */
+  if (silent_p)
+    switch_to_thread (thread);
+
  
/* We start by assuming threads are resumed. That state then gets updated when we process a matching stop reply. */ get_remote_thread_info (thread)->set_resumed (); - set_executing (this, ptid, executing); - set_running (this, ptid, running); + set_executing (this, thread->ptid, executing); + set_running (this, thread->ptid, running); return thread; } @@ -6055,9 +6059,7 @@ extended_remote_target::attach (const char *args, int from_tty) /* Add the main thread to the thread list. We add the thread silently in this case (the final true parameter). */ - thread_info *thr = remote_add_thread (curr_ptid, true, true, true); - - switch_to_thread (thr); + remote_add_thread (curr_ptid, true, true, true); } /* Next, if the target can specify a description, read it. We do

5. Чуток пожже выложу сборку уже с веткой gdb 13 - нужно тестить - под эклисой падает, с консоли все ок. наверно плагин эклипсы нужно подкрутить...

6. Крымскиое вино всталяет как надо - можно хуячить код или писание документов, разработку железяк не останавливаясь! Французкие - галимое кислое говно. точка. Наложить санкции и запретить ввоз, или разрешить с заградительной доплатой