在 Linux 上为 Windows 开发人员调试

Posted

技术标签:

【中文标题】在 Linux 上为 Windows 开发人员调试【英文标题】:Debugging on Linux for Windows Developer 【发布时间】:2009-04-14 12:33:46 【问题描述】:

我主要在 Windows 机器上完成了基本(新手级别)软件开发,但我一直有 MS Visual Studio 来帮助我逐步完成调试过程。

但是,现在看来我将使用 Linux,因此为了准备好进行跳转,我想确保我有一个工具/工具来帮助我逐步完成代码和调试。

不幸的是,当我口头询问人们如何在 Linux 上进行调试时,我通常会得到以下回答:“哦,我只是放了一堆打印语句。”我的天啊!你不会说,但是是的,这就是他们的答案。

由于它是在 Linux 上,并且将在 CentOS 32 位操作系统上使用 C++ 代码,我希望这是一个首选的开源解决方案。所以,我想我要求在 CentOS Linux 上为 C++ 代码提供首选的 OpenSource IDE。

感谢您的任何见解和建议。

【问题讨论】:

【参考方案1】:

当然是好问题,但它已经 之前完成:

https://***.com/questions/408418/what-editor-ide-do-you-use-for-c-programming-on-linux-and-why-closed https://***.com/questions/86676/is-there-a-good-and-free-ide-for-c-c-in-linux https://***.com/questions/149321/what-ide-would-be-good-for-linux-kernel-driver-development Lightweight IDE for Linux Simple GUI IDE?

(来自:https://***.com/questions/579219/best-unix-linux-c-debuger-ide-closed)

【讨论】:

【参考方案2】:

几年前,我从 VS 迁移到了 emacs/make 类型的环境,我从未回头。

这个想法是使用makefile 来处理 IDE 的项目管理方面,我使用 emacs+gdb 进行编辑和调试。你需要一段时间来适应 emacs,但如果你坚持下去,那么努力是值得的。启动 emacs 后,按“Ctrl+H”,然后按“t”,这将带您进入教程页面。

掌握了基础知识后,您可以使用与任何 IDE/调试器接口类似的方式来调试程序。我必须承认,即使经过了这么长时间,我仍然使用我第一次迁移到 emacs 时设置的一组 VS 键映射!

(global-set-key [f7] 'compile)          ;; Run the compile command
(global-set-key [f4] 'next-error)       ;; The next compile error
(global-set-key [S-f4] 'previous-error) ;; The previous compile error
(global-set-key [f5] 'gdb)              ;; Start the debugger

以下将“VS”键映射设置为您可能使用的不同 GDB 命令:

(add-hook 'gud-mode-hook
  '(lambda ()
     (define-key (current-local-map)
       [f10]
       'gud-next)
     (define-key (current-local-map)
       [f11]
       'gud-step)
     (define-key (current-local-map)
       [\S-f11]
       'gud-finish)
     (define-key (current-local-map)
       [f5]
       'gud-cont)
))

使用上面的键盘映射,我按下“f5”,提示我运行 gdb(我在这个命令中添加了我想要调试的二进制文件)。加载 gdb 后,按“f5”继续,按“f10”跳过,按“f11”进入,按“衬衫+f11”退出。

最后,每次启动“gdb”时,它都会在您的主目录中读取一个名为“.gdbinit”的文件。另一个 *** 问题有这个 answer 引起了我的注意 stl-views。 stl-views 是一组用于 gdb 的辅助函数,向您显示不同类型的 STL 容器的内容。如何使用它的说明可以在链接顶部找到。

【讨论】:

【参考方案3】:

我建议使用Eclipse

Eclipse 是一个成熟的 IDE,提供大量支持。

如果你想尝试不同的东西,还有Code::Blocks

【讨论】:

Code::Blocks 在内部也使用 GDB,我发现与 C::B 相比,单独使用 GDB 调试起来不那么痛苦。 哇——没想到会有这么多精彩的反应。现在我必须找到时间并利用这个机会来试验所有这些想法。我可能会从 Eclipse 开始,看看我是否可以将现有的 Linux 代码库引入 IDE,这是以前从未做过的,并且有大量的文件和很少的现有或准确的文档 - 不幸的是没有 *.dsw 或现有工作区或解决方案:(我想下一步将看看如何让这个野兽在 IDE 中工作。再次感谢所有回复,他们真的很棒。【参考方案4】: 日食 NetBeans KDevelop

【讨论】:

【参考方案5】:

总是有GDB。 XCode for OSX 在内部使用 GDB 进行调试。

【讨论】:

【参考方案6】:

Valgrind,它是你的朋友,可以让你免于通过 GDB 受苦。

【讨论】:

【参考方案7】:

大多数情况下,对于与 VS 类似 (?) 的 IDE - 使用 Eclipse。

请参阅 moving Microsoft VS projects to Eclipse C/C++ Development Toolkit - 将 Microsoft Visual Studio C/C++ (MSVC) 项目迁移到 Eclipse 的简要分步过程。它比较和对比了 MSVC 和 Eclipse CDT 的优势。

【讨论】:

【参考方案8】:

Anjuta 是一个非常棒的 GNOME IDE。对于调试,它在内部使用 GDB。

【讨论】:

【参考方案9】:

如果您只是想要一个好的调试器,请查看DDD。

【讨论】:

【参考方案10】:

在 linux 上调试时,我使用了 gdb 和 cscope 的组合。

【讨论】:

以上是关于在 Linux 上为 Windows 开发人员调试的主要内容,如果未能解决你的问题,请参考以下文章

如何在三星galaxy s7上为React Native启用USB调试

在 Linux 上为 Windows Phone 构建 Qt 应用程序

如何在 Windows 机器上为 Linux 编译 .NET Core 应用程序

为啥我在 IA32_LSTAR MSR 上使用内核调试器在 64 位 Windows 上为 SYSCALL 设置断点时会出现 DoubleFault? (KVASCODE 部分)

在 linux 上为 windows 编译

Qt - 在 Windows 上为 Linux 交叉编译