我从未使用过调试器,现在是时候尝试一下了。 MinGW似乎带有我一直在尝试使用的GDB。从命令行开始运行gdb并输入run myprog.exe
启动调试器,但是当我这样做时,我得到了
启动程序:C:\ MinGW \ bin \ myprog.exe MyProg.exe [新主题1828.0xd8c] 打开文件时出错。 [Inferior 1(流程1828)退出代码02]
如何进行或更简单的方式?
特别是我正试图清除未定义的行为。
答案 0 :(得分:2)
由于程序终止,您需要设置断点才能看到任何内容。在运行线之前尝试break main
。然后你可以执行命令行next
(下一行),step
(进入/退出函数调用),print expression
(其中表达式可以是变量名称或函数调用或计算),display expression
(与print相同,但在每个提示之前打印)。在任何给定点,您都可以键入backtrace
来获取调用堆栈。您甚至可以键入up
和down
来提升调用堆栈,这样您就可以打印更高的局部变量。
答案 1 :(得分:1)
嗯,实际上,最简单的方法是使用IDE。您可能想尝试code::blocks - 非常容易使用,在安装时为您配置一切(只需确保选择一个编译器 - 不要担心,它会提示您)在那里,你是一切准备就绪。由于它是多平台的,它也不会真正锁定你的窗口,并为你提供非常强大的(并且我认为更重要的是,方便的)图形调试的可能性。
答案 2 :(得分:1)
使用gdb传递二进制文件
gdb <binary>
然后将断点设置为main
gdb) break main
然后在gdb中运行你的程序
gdb) run
然后断点点击使用'n'或'next'步进到不同的行
gdb) n
使用's'进入功能,'p'打印var值
示例:
gdb) s <fun_name>
gdb) p x
答案 3 :(得分:0)
我建议,作为初学者从Visual Studio开始。它有一个非常好用且易于使用的调试器。只需在要开始调试的行中创建一个断点(单击该行旁边的左侧栏或右键单击并创建一个断点)。设置断点后,只需在调试模式下运行程序,程序的执行就会在创建中断点时停止。
此时,您应该能够查看有关程序执行的所有有价值信息。您可以使用F10继续执行步骤,或使用F11继续执行树。
调试器和许多其他高级功能一样,例如中断条件,命中数等,但您可以从它的基本功能开始。