Good source code browser for C [closed] - c

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am on the look out for a good software for browsing kernel level code written in C. I am currently using source navigator. Are there any better suggestions?
EDIT: I work on systems with both Windows and Linux (Ubuntu), so it should run on at least one of them, but Linux software is preferable.

This might not be what you're shooting for; it's less interactive than a dedicated tool, but I've found LXR to be very useful for providing a web interface front-end for browsing large source repositories. In each file, every symbol is linked to its original definition, so it's easy to dial down to exactly what you're looking for.
It was originally designed for indexing the Linux kernel source, and still does so here, (though I must say I'm not jazzed about the new AJAX interface...)
It can be run on any code base, though; not limited to the Linux kernel. And the web interface makes it easy to access from anywhere and from any system.

Visual Slick Edit does the trick for me.
Good tagging for big code bases, building, macros,light ui and support for many languages.
Unfortunately costs some $.

The reason I mostly wanted to switch from source navigator was that the project had closed down and the new project (Source navigator NG)seemed to be defunct(because the website etc. were down). But today, I checked and they had releases upto 2010. So they are probably still up and running.
Check it out, it has a good GUI and searching is easier than in cscope.

I use doxygen when I receive a big lump of code that I need to do a quick review on. You can use a special syntax in your source to make the doxygen output nice, but it does a decent job without.

netbeans works perfect for me
ctrl+click on any symbol will take you to the definition
then alt+left
very convenient for source code navigation
it's also cross platform

Related

Programming language or library for simple GUI? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What is a programming language to make program with a GUI. I know there is a way to make a GUI using C in Windows, but I want to program with Linux and make my programs compatible with other OS's as well. Any recommendations?
If all you want to do is make a GUI, why don't you just use HTML?
Alternatively, if you really want it to be a more native app, maybe consider Java.
I know there is a way to make a gui with C in windows but I want to program with Linux
Who told you that you can't write a GUI app in C on Linux...
Also, for whipping up quick GUIs, there's wxPython.
You cannot create a GUI using the standard C library. You can make one with an external library though.
With OpenCV, it is possible to make a GUI, and there is a large community behind the project. You can find lots of code examples and tutorials on their website. In addition, you can use OpenCV for lots of other computer vision related things.
You could also use GTK+ to write a GUI for your program. It is very simple, and easy to use for beginners. It's more focused on graphics though, and if you want another functionality required by an external library, you might not be able to use GTK+.

Integrate C library with Java, Ruby, Node, Python, Go, .NET [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Status Quo
For a project of mine I need a client library that communicates with my API for every major programming platform. Currently I implemented just one (Java) and was thinking 'I don't want to do this 8 times (or hope someone else will)'.
The client is relatively small, but not trivial; does mostly JSON reading/writing and sending TCP/UDP data over SSL. Every call to the client is fire-and-forget, so it works completely asynchronously in its own thread.
Problem
I was asking myself if it made sense to write a single C library and integrate it with the other platforms.
I did a bit of research and it seems every platform deals with this differently (obviously) with varying necessary efforts. I also realised that I never saw something like it - for example database drivers always seem to be written from scratch rather than using a C library at the core. Is the overhead too big?
I also read about Thrift, Protocol Buffers etc. - but this seems to be aimed at network interoperability?
Question
So the final question is:
Is it feasible to use a single C library at the core of each platform's client? If yes: how should it be done?
Using a C library makes sense if you want to consolidate all implementations of the same functionality into one piece of code - it is probably the only language that can be universally used by higher level languages.
Your work would be significantly easier if you could automate the process to a degree. You might want to have a look at SWIG. It is a binding generator that allows C/C++ code to be used with a large number of other programming languages, including most, if not all, of the languages that you mentioned.
For my rather superficial experience with it, SWIG does a rather decent job, although the generated code does occasionally need some tweaking...

Where to start to modify an open source software? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am asking this question is because I need to modify an open source software and I completely have no idea on how to start the project.
Here is more details.
I usually works in Linux and use GNU compiler (g++, gfortran, etc) and Intel compiler (icc and ifort). I can write fortran and c/c++ programs. So far, the project that I wrote is less than 10 files (with vim, no IDE so far). I usually compile them separately and put them together as a single executable file.
Now I need to modify an open source software (A software for scientific calculation. No GUI. And it reads an input file with all calculation parameters.). The source of it contains hundreds of files which is too much for me. It does come with a configure script and some makefiles. And it use both c and fortran codes (I suspect the c code calls some fortran subroutines.). But I haven't try to use fortran subroutines in c/c++.
I need to understand it, make a small modification and add some functions or subroutines in the software as new features.
Could you tell me where to start? Is there an IDE which can “import” the software as a project? Or some handy tool to draw the connections between different files? (It is horrible to read the configure script and makefile first, then start to work.)
Thanks.
You could try speaking to the maintainer of the project, or asking for guidance on their discussion forum if one exists. Don't expect them to just tell you want to edit, however. You're more likely to get help if you've at least tried to understand what the source code is doing and how it hangs together, particularly since, in my opinion at least, you really ought to understand what it currently does before you change it.
Having said that, if the change you need to make would be useful to other people, the maintainers may accept your proposed changes as a feature request.

IDE recommendations for C on Windows [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Anyone have recommendations for a good C editor for Windows? Any improvement over the Emacs over ssh setup I have right now would be appreciated.
Microsoft Visual C++ is a great IDE.
If you want something minimalistic, Notepad++ will give you syntax highlighting but stay out of your way.
Microsoft Visual C++ (the Express editions are free and very usable) is one of the best IDEs out there, especially on Windows.
I should start by pointing out that virtually any question about editor preferences pretty much qualifies to be closed as being subjective and argumentative. I don't believe for a moment that you're trying to be argumentative, but programmers do get attached to their editors...
If you like Emacs, and it's only the ssh connection that bothers you, then you can get various ports of emacs to Windows.
If you prefer vi and company, you can get vim for Windows.
If you like the normal Windows conventions for editors, Microsoft does a pretty lousy job of imitating it in the latest versions of Visual Studio (lousy compared to older versions at any rate). As compensation for its poor editing, it does have a really nice debugger though.
Another that works quite nicely is Zeus. It's purely an editor, not an IDE (e.g., no built in debugger) but it works well and provides keyboard emulation for everything from Emacs to Wordstar.
If you just want a nice text editor, jEdit is a very good one.
If you want a straight text editor that's super powerful, I would give e a shot. It's based on the well-loved TextMate for OS X, and on top of really intelligent sytax highlighting/indenting/whatnot, it's got a pretty powerful suite of macros.
Source Insight is fantastic for showing you code path execution. The color coding is a nice touch and font types and sizes change as well. Many engineers I worked with swore by it.

Obfuscation and reverse engineering deterrents for C++ Win/OSX app [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I've got a C++ app that ships on Windows and OSX. It communicates with our backend using TCP (encrypted with OpenSSL, natch). I'd like to throw up some speed bumps for folks who are trying to reverse engineer the protocol and/or disassemble the executable.
Skype does an excellent job of this, which is why you won't find a lot of apps that speak skype. Here is a really good read about what it does: http://www.secdev.org/conf/skype_BHEU06.handout.pdf
I'd like some ideas about how to accomplish similar stuff our app. Are there commercial products that make code harder to statically analyze? What is the best way to invest my time to accomplish the goals I've listed?
Thanks,
Some simple suggestions for OSX:
Prevent gdb from attaching to your program
http://www.steike.com/code/debugging-itunes-with-gdb/
(this can be worked around, but will keep some casual explorers away)
Have at least some of the code in your product stored outside the text segment of the executable, for example in data, or in an external (encrypted) shared library.
Minimally protect any sensitive string data by not storing it in plain text. Run "strings" against your executable, and if you see anything that might be helpful to someone trying to figure out the protocol, encrypt it.
GCC's -fomit-frame-pointer option can make debugging more painful (but can interact badly with C++ exceptions).
If I remember correctly Skype is using something similar (maybe they pay them to implement it in Skype, who knows) to "Code Guards" described in:
https://www.cerias.purdue.edu/tools_and_resources/bibtex_archive/archive/2001-49.pdf

Resources