1. I don't mean to bash your idea, but unless your "modules" are seperated into seperate processes, any part of your code or libraries can affect any other part. Writing a multi-process system has it's own complexities and issues.
And FYI, detecting hangs is a pretty hard problem.
2. Like was said, heavily consider going to a VM langauge (Java,.NET), unless you are willing to invest a lot of extra time in testing, code review, analysis, etc.
3. If you are going to use C++, consider using Smart Pointers, garbage collectors, etc, available for C++ at http://www.boost.org/
4. Test early and often, and aim for full code coverage with code coverage tools. Code you don't run is code you haven't tested. Test also with memory tools such as Bounds Checker. I beleive Linux has robust gcc-enabled tools in this area also. Throw anything and everything at your code, including strange data, bad inputs, etc.
5. Use static code analysis if possible. You will have bugs in your code, period. Historically, this generates a lot of false positives. MS VStudio 2005 Team Edition is not free, but it may be available to you through MSDN or something. This has pretty good basic analysis of common errors available through the/analyze switch. Coverity is also a better ($$$) commercial static analysis tool.
6. Use plenty of assertions in your code
7. Make sure you have a good crash handler setup to generate relevant crash data and hopefully semi-automatically get it back to you.
8. Write solid unit tests WITH your code, and make sure the code is built often/w automated running of unit tests & other tests.
1. I don't mean to bash your idea, but unless your "modules" are seperated into seperate processes, any part of your code or libraries can affect any other part. Writing a multi-process system has it's own complexities and issues.
.NET), unless you are willing to invest a lot of extra time in testing, code review, analysis, etc.
/analyze switch. Coverity is also a better ($$$) commercial static analysis tool.
/w automated running of unit tests & other tests.
And FYI, detecting hangs is a pretty hard problem.
2. Like was said, heavily consider going to a VM langauge (Java,
3. If you are going to use C++, consider using Smart Pointers, garbage collectors, etc, available for C++ at http://www.boost.org/
4. Test early and often, and aim for full code coverage with code coverage tools. Code you don't run is code you haven't tested. Test also with memory tools such as Bounds Checker. I beleive Linux has robust gcc-enabled tools in this area also. Throw anything and everything at your code, including strange data, bad inputs, etc.
5. Use static code analysis if possible. You will have bugs in your code, period. Historically, this generates a lot of false positives. MS VStudio 2005 Team Edition is not free, but it may be available to you through MSDN or something. This has pretty good basic analysis of common errors available through the
6. Use plenty of assertions in your code
7. Make sure you have a good crash handler setup to generate relevant crash data and hopefully semi-automatically get it back to you.
8. Write solid unit tests WITH your code, and make sure the code is built often