kopia lustrzana https://github.com/espressif/esp-idf
80 wiersze
2.9 KiB
CMake
80 wiersze
2.9 KiB
CMake
# __generate_gdbinit
|
|
# Prepares gdbinit files to pass into the debugger.
|
|
|
|
function(__generate_gdbinit)
|
|
# Define static gdbinit commands
|
|
if(CONFIG_IDF_TARGET_LINUX)
|
|
set(gdbinit_connect
|
|
"# Run the application and stop on app_main()\n"
|
|
"break app_main\n"
|
|
"run\n")
|
|
else()
|
|
set(gdbinit_connect
|
|
"# Connect to the default openocd-esp port and stop on app_main()\n"
|
|
"set remotetimeout 10\n"
|
|
"target remote :3333\n"
|
|
"monitor reset halt\n"
|
|
"maintenance flush register-cache\n"
|
|
"thbreak app_main\n"
|
|
"continue\n")
|
|
endif()
|
|
|
|
set(gdbinit_py_extensions
|
|
"# Add Python GDB extensions\n"
|
|
"python\n"
|
|
"try:\n"
|
|
" import freertos_gdb\n"
|
|
"except ModuleNotFoundError:\n"
|
|
" print('warning: python extension \"freertos_gdb\" not found.')\n"
|
|
"end\n")
|
|
|
|
# Define paths
|
|
set(gdbinit_dir ${BUILD_DIR}/gdbinit)
|
|
set(gdbinit_rom_in_path ${gdbinit_dir}/rom.gdbinit.in)
|
|
set(gdbinit_rom_path ${gdbinit_dir}/rom.gdbinit)
|
|
set(symbols_gdbinit_path ${gdbinit_dir}/symbols)
|
|
set(py_extensions_gdbinit_path ${gdbinit_dir}/py_extensions)
|
|
set(connect_gdbinit_path ${gdbinit_dir}/connect)
|
|
idf_build_get_property(PROJECT_EXECUTABLE EXECUTABLE)
|
|
set(application_elf ${BUILD_DIR}/${PROJECT_EXECUTABLE})
|
|
file(TO_CMAKE_PATH $ENV{ESP_ROM_ELF_DIR} ESP_ROM_ELF_DIR)
|
|
|
|
file(MAKE_DIRECTORY ${gdbinit_dir})
|
|
|
|
# Get ROM ELFs gdbinit part
|
|
if(CONFIG_IDF_TARGET_LINUX)
|
|
set(rom_symbols)
|
|
else()
|
|
execute_process(
|
|
COMMAND python "${idf_path}/components/esp_rom/gen_gdbinit.py" ${IDF_TARGET}
|
|
OUTPUT_VARIABLE rom_symbols
|
|
RESULT_VARIABLE result
|
|
)
|
|
if(NOT result EQUAL 0)
|
|
set(rom_symbols)
|
|
message(WARNING "Error while generating esp_rom gdbinit")
|
|
endif()
|
|
endif()
|
|
|
|
# Check if bootloader ELF is defined and set symbol-file accordingly
|
|
if(DEFINED BOOTLOADER_ELF_FILE)
|
|
set(add_bootloader_symbols " add-symbol-file ${BOOTLOADER_ELF_FILE}")
|
|
else()
|
|
set(add_bootloader_symbols " # Bootloader elf was not found")
|
|
endif()
|
|
|
|
# Configure and generate files
|
|
configure_file(${idf_path}/tools/cmake/symbols.gdbinit.in ${symbols_gdbinit_path})
|
|
file(WRITE ${py_extensions_gdbinit_path} ${gdbinit_py_extensions})
|
|
file(WRITE ${connect_gdbinit_path} ${gdbinit_connect})
|
|
|
|
# TODO IDF-11667
|
|
file(WRITE ${gdbinit_dir}/gdbinit "source ${symbols_gdbinit_path}\n")
|
|
file(APPEND ${gdbinit_dir}/gdbinit "source ${connect_gdbinit_path}\n")
|
|
|
|
# NOTE: prefix_map gbinit file generates by prefix_map.cmake file
|
|
idf_build_set_property(GDBINIT_FILES_SYMBOLS ${symbols_gdbinit_path})
|
|
idf_build_set_property(GDBINIT_FILES_PY_EXTENSIONS ${py_extensions_gdbinit_path})
|
|
idf_build_set_property(GDBINIT_FILES_CONNECT ${connect_gdbinit_path})
|
|
endfunction()
|