在 Linux 和 Windows 中用 C 语言编码。任何适当的面向调试的以 C 为中心的 IDE?

标签 c linux debugging ide

我在用 c 编写一些代码时遇到了问题。我的基本问题是我时间紧迫,我正在处理的代码有很多错误,我必须在明天晚上之前“消除”这些错误。

问题的更大部分是没有足够的 IDE 可以进行实时调试,尤其是在使用线程或通过 fork() 生成进程时。我尝试了 Mono、Eclipse,最后是 NetBeans,并得出结论,这些都非常好,但不适合用 C 编写代码。要正确利用命令行调试器的学习曲线非常陡峭。 (就像我之前提到的......我很赶时间。)

因此,由于我的职业是 C# 开发人员,所以我想知道我是否可以在 VS2003/VS2005/VS2008/VS2010 中实现这一目标。如果我放弃使用系统调用,我可以这样做吗?

特别感兴趣的是 FILE* 描述符和 fread()、fclose()、fseek() 方法。我知道它们是标准 C 库的一部分,但是它们是否与平台本身相关联? Linux 和 Windows 中的 header 是否相同? fork() 或共享内存怎么样?

也许如果我使用 VS2010 一次构建组件的一部分(通过模拟输入和其他东西),调试它们,然后将工作代码迁移到整个 Linux 项目中,这将证明是最有用的吗?

任何输入将不胜感激。

最佳答案

The bigger part of the problem is that there is no adequate IDE that can do real time debugging, especially when using threads or spawning processes with fork().

Eclipse CDT可能会为 C/C++ 开发和集成调试提供最好的整体支持。

请注意,即使在最好的情况下,多线程和多进程调试也很困难。在这一点上投资一个好的日志记录框架是明智的,并且可能比依赖调试器更有用。有很多可供选择——看看 Log4C++ 等等。连printf在紧要关头可能是无价的。

So, since I am a C# developer by profession I was wondering whether I can pull this off in VS2003/VS2005/VS2008/VS2010. If I abstain from using system calls, can I do this?

如果您注意只使用可移植调用而不是特定于 Win32 的 API,您应该没问题。此外,还有许多库(对于 C++ 库,例如 Boost++,它们提供了一组丰富的功能,这些功能在 Windows、Linux 和其他系统上同样有效。

Of particular interest are FILE* descriptor and fread(), fclose(), fseek() methods. I know they are part of the standard C library, however are they tied to the platform itself? Are the headers the same in Linux vs Windows? What about fork() or shared memory?

是的,你提到的文件I/O函数在<stdio.h>中和可移植标准 C 库的一部分。它们在 Windows 和 Linux 上的工作原理基本相同,并且不依赖于特定平台。

然而,fork()和共享内存函数 shmget()是 POSIX 函数,在 *nix 平台上可用,但在 Windows 上不可用。 Cygwin项目在库中提供了这些功能的实现,以便于移植。

如果您使用的是 C++,Boost++将为您提供所有这些系统级调用的便携版本。

Maybe if I use VS2010 to build parts of the component at a time (by mocking inputs and stuff), debug those, and then migrate the working code in the overall Linux project would prove most useful?

你当然可以做到。请注意,Visual Studio 倾向于将您引向 Win32 路径,您必须保持警惕,不要开始使用不可移植的功能。幸运的是,MSDN 上的库引用为您提供了兼容性信息。通常,使用标准 C 或 POSIX 调用是可移植的。根据我的经验,在 *nix 上编写并移植到 Windows 实际上更容易,但是 YMMV。

关于在 Linux 和 Windows 中用 C 语言编码。任何适当的面向调试的以 C 为中心的 IDE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5798085/

相关文章:

c - while(*s++=*t++) 相当于哪个表达式?

php odbc_connect to mssql 在 linux/ubuntu 命令行而不是浏览器中工作

Linux Shell 脚本 : Script Check

c++ - var-create 无法创建变量对象

C - 用低位宏显示字符串

c - 将结构分配给静态数组

c++ - 同时fork 100个进程,有时有些进程会变成僵尸进程

java - "Source not found"消息在 Eclipse 中与 JBoss 在 Debug模式下 - 断点在我的代码中

c++ - QtCreator : breakpoints not working (in debug mode)

c - 未定义的建筑符号 - 奇怪的消息