如何在使用第三方脚本启动后运行预定义的 gdb 命令并使用 Make 使其保持交互?

问题描述 投票:0回答:1

我试图从 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 symbols interactive edk2
1个回答
0
投票

如果从 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)
© www.soinside.com 2019 - 2024. All rights reserved.