我试图从 makefile 启动交互式 gdb 会话,但它不起作用,并且 gdb 立即结束。
我从终端调用此 EDK2 命令并获得交互式 gdb 会话
EmulatorPkg/build.sh run
我想我必须使用这个命令来获取可调试的模拟器,因为 shell 文件调用另一个命令,并且有一堆命令来添加模拟器符号。
如果从 makefile 调用,我不会得到交互式 gdb,它会立即结束。为什么?
这些是 makefile 命令
all_debug: build compiledb run_debug \
Application/BootLib \
FourthFingerPkg.dec \
FourthFingerPkg.dsc
build:
pwd && make VERBOSE=y _build &> $(MAKE_OUTPUT)
compiledb:
pwd && compiledb --parse $(MAKE_OUTPUT) && rm $(MAKE_OUTPUT)
run_debug: $(BUILD_DIR)/$(EFI_FILE)
cd .. && pwd && \
cp ./Build/FourthFingerPkg/DEBUG_GCC/X64/FourthFingerPkg.efi ./Build/EmulatorX64/DEBUG_GCC5/X64/FourthFingerPkg.efi && \
echo "add-symbol-file ../../../FourthFingerPkg/DEBUG_GCC/X64/FourthFingerPkg.debug" > $(GDB_COMMANDS) && \
EmulatorPkg/build.sh run < $(GDB_COMMANDS) && \
rm $(GDB_COMMANDS)
我想它与此消息有关
(y or n) [answered Y; input not from terminal]
我希望能够使用我的模块中的符号设置 gdb 环境,因为我的 EFI 的符号文件不是由 EmulatorPkg/build.sh 运行加载的,手动加载它们只是愚蠢的。 ufeff
如果从 makefile 调用,我不会得到交互式 gdb,它会立即结束。为什么?
尝试--tui模式,可以将其添加到gdb中以启动交互式会话,同时保留终端控制权。
run_debug: $(BUILD_DIR)/$(EFI_FILE)
cd .. && pwd && \
cp ./Build/FourthFingerPkg/DEBUG_GCC/X64/FourthFingerPkg.efi ./Build/EmulatorX64/DEBUG_GCC5/X64/FourthFingerPkg.efi && \
echo "add-symbol-file ../../../FourthFingerPkg/DEBUG_GCC/X64/FourthFingerPkg.debug" > $(GDB_COMMANDS) && \
EmulatorPkg/build.sh run --tui -x $(GDB_COMMANDS) && \
rm $(GDB_COMMANDS)