如何逐行运行Linux程序

3

我希望能够逐行运行一些GTK+/C程序并进行调试。我从未调试过Linux程序,因此我在哪里可以找到非常初学者的指导来调试代码?我只有一个想法,就是从网络上下载源代码,使用调试符号编译项目,并通过DDD或GDB运行源代码。所以,有人能否给出建议,如何开始学习这些主题以及什么是一个好的调试器?我至少有时间学习。


为什么你说我没有接受任何答案?我在这里得到了很好的建议,我真的很感激这里的人们抽出时间帮助我解决问题。我还能做什么呢?添加一条评论“非常感谢”吗? - Jaska
不,选票按钮下面的勾号表示您已经接受了该答案为正确答案。 - Joe
Jaska,你需要在你提出的每个问题旁边点击大的勾选标记来选择最佳答案。 - bstpierre
Joe,我怎么知道答案是否正确?如果我寻求帮助,那位程序员比我更懂这个主题。通常他或她可以更好地判断答案是否正确。 - Jaska
谢谢David。我在别的地方从没见过"投票最佳答案"这个属性,所以很抱歉。我会尽量记住接受答案的次数。 - Jaska
显示剩余2条评论
3个回答

3
此外,除了DDD之外,您还可以了解一下nemiver,它们在不同的方面都很好,但nemiver正在快速发展。
另外,如果您使用的是Ubuntu并想步入从包存储库安装的应用程序(我们称其为some_package),则需要执行以下步骤:
1. 安装“build-essential”和“devscripts”软件包。 2. 运行“sudo apt-get build-dep some_package”命令,安装编译该软件包所需的所有内容。 3. 运行“mkdir -p ~/src/some_package; cd ~/src/some_package”创建源代码目录。 4. 进入System::Administration::Software Sources,并激活“Source Code”存储库。 5. 运行“apt-get source some_package”下载some_package的源代码并将其放置在当前目录中。 6. 使用“cd”进入特定的应用程序目录,通常是“some-app-1.2.3”之类的。 7A. 运行“debuild -us -uc -b”将源代码编译成一个新的可安装的DEB文件,在发布模式下编译不带调试信息。 或者(这是核心部分): 7B. 运行“MAKEFLAGS=-j6 DEB_BUILD_OPTIONS=”nostrip noopt parallel=5“ CFLAGS=”-g3 -O0“ debuild -us -uc”以调试模式构建DEB调试信息。
8. 使用“cd ..”向上移动一步,然后执行“ls”,您应该会看到生成的DEB文件(可以从单个源包生成多个二进制包即DEB)。 9. 运行“sudo dpkg -i some_package_123.deb”以安装您刚构建的版本。
当然,在步骤6和7之间,您还可以选择修改代码。这种方法的好处是它适用于几乎任何应用程序。您可以将其用于Firefox、Linux内核、mesa堆栈或其他任何内容。

谢谢!我尝试使用Nemiver来调试gedit,这很有效。但是它会调用一些GTK+的库,那么我该如何使用Nemiver来查看GTK库内部发生了什么?并且我能否将valgrind和Nemiver结合起来,以便我可以查看是否存在内存泄漏,例如在第1到350行之间。 - Jaska
顺便说一下,Ubuntu仓库中没有开发人员使用的最新代码。有没有一种方法可以编译他们正在使用的最新代码? - Jaska
不同的上游项目使用不同的版本控制系统和构建系统,因此没有通用的构建方法。你必须学习特定项目使用的任何工具,这对于像Mozilla或Xorg这样的大型项目来说可能是一个巨大的障碍。 - martin

1

1
@Jaska:该文章链接到http://www.dirac.org/linux/gdb/作为一个建议的教程。 - Brian
维基百科不应被视为可靠信息。我将其用作查找可靠信息来源的简便方式。 - Mike
@Mike:我猜你认为这是因为任何人都可以编辑它。然而,请考虑一下在Stack Overflow上任何人都可以添加答案,如果他们有足够的声望,他们也可以编辑现有的答案。如果是这种情况,那么它们在可靠性方面应该是相等的。我个人在实践中发现两者都非常可靠。 - icktoofay

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接