在 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 部分)