| 
 |||||||
| 
    Как вывести шестнадцатеричное HEX-значение для типа int при отладке в PlatformIO 
        
        
		  Время создания: 13.10.2022 22:49		  
		 
		
		 		
		
		 		 
		  Текстовые метки: platformio, VSCode, VS Code, Visual Studio Code, hex, шестандцатеричный, int, целое, значение, представление, debug, отладка		  
		 		
		
				  
		    Раздел: Компьютер - Аппаратное обеспечение - Микроконтроллеры ARM		   
		
		
		 		 
		  Запись: xintrea/mytetra_syncro/master/base/1665690566qwf5moec0t/text.html на raw.githubusercontent.com		  
		 
		
				  
  | 
 |||||||
| 
    | 
 |||||||
| 
    При отладке микроконтроллеров иногда удобнее видеть шестнадцатеричное значение int-переменной вместо того чтобы смотреть на целочисленное представление. Как это можно сделать в PlatformIO? Во-первых надо сказать, что из-за оптимизаций (например при использовании inline-функций) значение переменной не всегда можно увидеть. Тут уж ничего не поделаешь и придется модификатор "инлайновости" убирать. Так же нужно проверить, с какими опциями компилируется debug-сборка. Для нормальной отладки все оптимизации должны быть отключены. В файле platformio.ini должна быть прописана опция debug_build_flags, примерно так: [env:bluepill_f103c8] platform = ststm32 board = bluepill_f103c8 framework = cmsis build_flags = -std=c99 -O3 debug_build_flags = -O0 -g -ggdb Увидеть отлаживаемую переменную можно в раскрывающейся области "Контрольное значение". Нажав на плюсик [+] можно добавить еще одну переменную (кстати, можно добавлять выражения). После нажатия плюсика надо просто ввести имя переменной. Или можно выделить имя переменной, нажать правую кнопку мыши, и в контекстном меню выбрать "Добавить контрольное значение". Чтобы отлаживаемая переменная отображалась в HEX-нотации, необходимо перед именем переменной написать (void *), вот так: 
 В данном примере addr - это имя int-переменной. Вообще, PlatformIO поддерживает следующие форматы: Currently, VSCode does not provide an API to change the value format of watchpoints. You can manually cast watchpoint expressions to display the value as specific pointer types: 
 Видно, что можно отображать не только int-значения, но и разыменовывать указатели в HEX-представление, и даже указатели на указатели и прочие сложные составные типы данных.  | 
 |||||||
| 
    
 
 Так же в этом разделе:
  
  
  | 
 |||||||
      
   | 
 |||||||
   
   
  | 
 |||||||
   
  |