Automated debugging tools [closed] - debugging

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I have recently discovered the amazing world of automated debugging, where your tool try to automatically isolate the part of the code that causes a bug. Since then, I have found some tools, like these:
delta debugging (implementation in DD.py) using scientific methodology applied to debugging.
static and dynamic program slicing extracting a subprogram trace highlighting the variables you want to observe.
git-bisect using bisection applied to code history and mixed with delta debugging to quickly find what change caused the bug.
I'm interested into finding more algorithms for automated debugging, which can automate some part (or all?) of the debugging process and where a pratical working implementation exists, particularly:
approaches such as delta debugging (which can precisely pinpoint where and why a bug happens in the code by using a systematic/automated approach).
is there a software that can automatically generate a minimal program that reproduces a bug from a full program?
NB: some tools I cited are mainly geared towards Python but I am looking for automated debugging tools on any language, what is interesting me is the approach and algorithms, not the specific implementation, but I require an implementation (even a proof of concept) because I would like algorithms which have already been practically applied to real problems (ie, they work, that's just not computer science philosophy).
Clarification: I'm not looking for automated testing tools (which automatically test to find a new bug), but automated debugging approaches where you have a specific bug you want to find the origin in your code.

I have found a few softwares that can generate a minimal program that reproduces a bug:
DD.py has in fact two functions: dd() to find the minimal change that introduced a bug, and ddmin() which finds the minimal configuration (ie, minimal test case).
Delta, a program specifically tailored for that purpose.
I also found a course on Udacity called Software Debugging which is presented by Andreas Zeller, the original author of delta debugging.
Side note: these are also somewhat related tools (although they are mainly unit testing tools, they can be used in combination with automated debugging so it's kind of related):
coveralls
coverage
automated unit test generator Pythoscope
I am still looking for alternative approaches to automated debugging.

Related

Is SonarQube sufficient for static code reviews? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 12 days ago.
Improve this question
My applications are based on Java, Kotlin and React.
Besides SonarQube there are other popular tools like:
Amazon CodeGuru helps you improve code quality and automate code reviews by scanning and profiling Java and Python applications. CodeGuru Reviewer can detect potential defects and bugs in your code.
Synopsys Coverity Static Analysis identifies critical software quality defects and security vulnerabilities in code and any lapses in industry compliance standards.
PMD is most useful when integrated into your build process. It can then be used as a quality gate, to enforce a coding standard for your codebase
Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task.
SpotBugs is a program which uses static analysis to look for bugs in Java code.
Considering the power all these tools resides in SonarQube. Should I use only SonarQube or combination of these are required?
I study various static code analysers and am looking for a recommendation.
All static analyzers are different based on their own communities. Some analyzers have different checks or logic that none of the others have. Even if 2 analyzers have the same check, one could work better than the other, or one may be easier to run locally before submitting to a CI for a more in-depth review.
I recommend to enabling as many different analyzers as you can as long as they let you turn checks on/off and disable violations that you disagree with. Customizing these tools to the style of your project is what ultimately matters.

Smalltalk equivalent of Inspect tool for windows [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
Is there a Smalltalk equivalent of Inspect tool that is available for Microsoft Windows or something like inspect option available in Web browsers
From what I've researched, Smalltalk allows run-time reflection. I think this is more related to applications developed within the Smalltalk IDE.
I'm looking for an Inspect application for independent smalltalk EXEs.
I tried posting on SuperUser, but tags smalltalk was not available. I thought I might get answers here.
Such a tool could be created as a part of the Smalltalk application. However, trying to access objects from the outside without any help from within the Smalltalk system would be challenging because Smalltalk objects change their location very often (potentially, at every garbage collection) and therefore the external tool would need to somehow deduce the new location of the object from some fixed root known to it.
Now, if what you need is for debugging purposes, you could (in theory) halt the execution of the Smalltalk system and look for the object of interest in the object memory, tracing the instance variables as well, etc., resuming the execution of the Smalltalk exe when done. None of this is easy though, and that's why it would be much better if the Smalltalk application offered such a tool as an end-user feature.
Smalltalk is a language specification with many implementations. If available, tools for "external" debugging of Smalltalk applications will be vendor/implementation dependent.
Specific techniques for debugging a Smalltalk application without obvious access to a traditional Smalltalk development environment will vary between Smalltalk implementations. For example all GNU Smalltalk debugging is done without a Smalltalk IDE.1 There have been (are?) tools for "headless debugging" of Pharo applications. 2

Software Testing vs Software Evaluation [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 5 years ago.
Improve this question
Can anyone clearly explain the difference between Software Testing and Software Evaluation?
I think I have pretty clear what Testing is, but I don't have that clear what Evaluation is, so can you please provide an example?
And finally, if I wanted to include a list of the previously defined requirements of the project, establishing whether each of them has been achieved, and in the case it's not been achieved, a discussion of why not... where does this fit?
Software Testing:
Software Testing is the Process of Executing a program instant of finding error.
Software Evaluation:
A software evaluation is a type of assessment that seeks to determine if software or a combination of software programs is the best possible fit for the needs of a given client.
First of all, these terms are not related. Software testing is the process to make sure that the software that you are coding meets client's requirements and it is relatively free from bugs. Software evaluation on the other hand is to identify an already available software which might suit your need.
Assume your need is for a database compare tool. You have 2 options - either you create your own custom made software (or get some vendor to create one for you) or you can look to buy an off-the-shelf or ready-made tool. In case you are creating your own custom made tool, it would mean that it needs to be planned, designed, coded, tested and then implemented. This would involve a complete software development life-cycle. Here, testing comes into the picture.
If you choose to purchase an already developed tool, then you might look for different vendors to quote their projects, the tools capability. You might want to try out all of them to see which one is the best tool for you w.r.t. your need and pricing. This is software evaluation.
Software Evaluation is a widespread relative term.
According to Wikipedia:
Evaluation is a systematic determination of a subject's merit, worth
and significance, using criteria governed by a set of standards. It
can assist an organization to assess any aim, realisable
concept/proposal, or any alternative, to help in decision-making; or
to ascertain the degree of achievement or value in regard to the aim
and objectives and results of any such action that has been completed.
The primary purpose of evaluation, in addition to gaining insight into
prior or existing initiatives, is to enable reflection and assist in
the identification of future change.
As you see, it's complex and related to business administration B.A.
I think you are looking for a procedure model, like Quantitative Methods for Software Selection and Evaluation. There's no standard model or guidelines for evaluation handling in software.
Software Testing is a method of finding out whether a software is working as it should, e.g. giving correct output, working fast enough, handling expected loads, responding to user inputs properly.
Software Evaluation is a process of judging how well the Software’s original intended goals have been achieved.
Evaluation happens after the Software has been developed, and its users have used it long enough to become familiar with it and can use it effectively.

Anybody tried the Crystal Programming Language (machine-code compiled Ruby)? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Like many others, I always hold true that "A pure compiler will never exist for Ruby because the language is far too dynamic for a static compiler to work."
But I recently stumbled upon these:
The Crystal programming language at GitHub
Statically compiled Ruby
Both projects seem to be very interesting. They could give us the speed of a native-compiled language (and the often commercially-required, obfuscated code of a compiled language) while keeping all (or most) of the elegance and flexibility of Ruby. Add a good support library (or, more likely, the possibility to access the existing C++ libraries) and you can easily understand why this stuff could be interesting.
Has anybody tried the Crystal language?
(I didn't yet, because of compilation problems with ruby-llvm)
Which was his/her feeling about it?
Do you think that, given those design choices, would it be actually possible to develop a native-code (machine-code) compiler for Ruby (with a reasonable effort and in a reasonable amount of time)? Would it be meaningful?
I'm the developer of crystal. Currently not everything is implemented from the bulleted point list. In fact classes were just started to be implemented.
I really like the idea of it though. But I need to think more about how to implement it. And I also need more time, hehe.
The second article has a completely different approach because it won't introduce a new language: it'll just try to compile a subset of Ruby, or maybe will be compiled to native code but still allow some dynamism with performance costs (I talked to the author of that article some months ago).
My feeling toward both approaches: I really with it could happen. We need a fast language with an elegant, readable, joy to use syntax and library (like what Ruby offers).
I'm the developer of Foundry; the second article is mine.
A more recent article on the same topic would be "A language for embedded developers"; or you could also track development progress by subscribing at foundry-lang.org.
Please note, however, that my project is commercial, (at least initially) not open-source, and is primarily focused on embedded development. You could still use it on desktops or servers, of course.
I'm also one of ruby-llvm maintainers; please report the problems you've encountered as bugs on the project page.

Software Design Implementation - Issue/Module/Bug/Feature Tracking Solution [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
The company is growing and we're starting to implement more and more complex software designs. I feel a need for some tracking software... I just don't know if it exists.
I currently maintain a Google Doc Folder (shared by our 3 developers) with a well-organized doc for each module. A doc is also created per major upgrade to a module or modules. For all other "tracking"... we have interal forums.
I want the following:
I want get an immediate printout of all Project_01 features or bug fixes on a particular project with the option to hide or show developer comments that have been implemented in the last X number of days.
This clearly suggests a web-based system where developers enter issues, bugs, and features with appropriate tagging. Entries should be commentable, taggable, dated, editable and reporting should be based upon tags, dates, developers, projects, etc.
I figure I'm going to be perceived as naive by the grizzled veterans floating around here, though I've been running this business for 4 years (so I've been around). I don't think we have the resources to absorb the overhead of implementing something like CMMI... but then again, I don't really know what's best.
My personal evolution to using Google Docs per Application Module + internal phpbb forums for everything else has been pretty nice compared to the way we started out (marker boards, Microsoft Word docs). I just feel like I can go a long ways towards exceeding client expectations if I had the ability to track features/bugs/issues better with superior on-demand reporting.
Thoughts?
Update: Went with MediaWiki integrated with Mantis
Take a look at fogbugz. It looks like it meets all your requirements.
Also, take a look at this other SO question: Free/Cheap Task/Bug Management software
I've good experiences with mantis. http://www.mantisbt.org
Yes, FogBugz and Trac are recommended.
I hope it helps.
I find this comparison of issue tracking systems either interesting or overwhelming.
I think with 3 developers, in the same building, you probably can get by without software tools. But, adopting something now, before you're so big/complex that you can't survive without it may save a lot of future pain.

Resources