01-11-2013
This is one of the problems with the goto construct. Conditional jumps are a special problem in the logic construction of a progam. I personally seldom use them, except in descent parsers (setjmp/longjmp are a kind of conditional jump, too).
Consider removing most of those jumps. There are some folks who would go on a 'Never use goto' rant. But everything in C++/C is there for good reason, including goto.
But: Absolutely do make err_abort() a separate function.
you should also instrument your code - add fprintf() statements liberally, use the __LINE__ preprocessor command to show where you are in the code. When you have jumps debugging can be extra hard.
10 More Discussions You Might Find Interesting
1. HP-UX
Hi,
I don't know if this is HP-UX specific, but I'll take my chances with this forum. ;)
I'm using WDB 5.7 on HP Itanium 11.23.
'file' on my executable shows:
ELF-32 executable object file - IA64
The problem is with viewing the contents of the variables.
Following is a sequence that... (0 Replies)
Discussion started by: rimon
0 Replies
2. Programming
I have to compile gnu-gdb 6.7 on HP-UX 11.11 with /usr/local/pa64/bin/gcc 64-bit compiler, but I'm having some problems during "make":
ser-tcp.c: In function `net_open':
ser-tcp.c:207: warning: passing arg 5 of `getsockopt' from incompatible pointer type
make: *** Error 1
make: Leaving... (8 Replies)
Discussion started by: untamed
8 Replies
3. Programming
If an executalbe file has several parameters, gdb can not pass parameters correctly. Let us see:
run:
./executablefile1 agr1 arg2 arg3
debug:
gdb executablefile1
run executalbefile1 arg1 arg2 arg3
then argv : executablefile1
argv : executablefile
argv : arg1
... (3 Replies)
Discussion started by: cdbug
3 Replies
4. Programming
I created one file (test.cpp)and complied it and get the executable file(test) and run it.It is giving the out put but when I am trying to debug that executable.I am getting the error --
please tell me the solutions??
Thanks in advance ..... (2 Replies)
Discussion started by: smartgupta
2 Replies
5. UNIX for Advanced & Expert Users
Hi all,
(gdb) target remote 192.168.185.196:1389
Remote debugging using 192.168.185.196:1389
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
0x2fbd0800 in ?? ()
(gdb) l
1 ... (0 Replies)
Discussion started by: yanglei_fage
0 Replies
6. Programming
Hi All
I know How to attach a process to beubg it .But for my application I am using client as well server.Both are two separate process .Suppose I need to debug both .How to attach both of them together .Or I have to attach them separetly .
Suppose client process id is 1325 and server is... (2 Replies)
Discussion started by: mr_deb
2 Replies
7. Programming
I hope this is the right thread - not sure if it belongs in the Linux forum. Anyway, I'm having an issue with ddd and gdb. When using ddd to run gdb, there are extra parameters being appended, and my program is picking them up.
I'm running on Ubuntu 11.04...
Here's my command line entry -
... (1 Reply)
Discussion started by: jalburger
1 Replies
8. UNIX for Dummies Questions & Answers
I have added some code in my file.
I have created executable rpm file of our code and also I have created debuginfo and debugsource files and installed all three.
But when I debug in gdb I see the the code changes in soucre file. But the break point does not hit at that place as if it did not... (1 Reply)
Discussion started by: rupeshkp728
1 Replies
9. Programming
Hi,
Can anyone explain this please..... This is on AIX with GDB (tried a few versions). It only happens when program compiled in 64 bit and only with static variables....
A simple test program...
### snip
#include <stdio.h>
main() {
static int n;
n = 6;
printf("hello %d\n", n);... (0 Replies)
Discussion started by: bagpussnz
0 Replies
10. Programming
Some background:
The application normally runs on an embedded platform. Currently, for development purposes, I have the rootfs located @ /exports and the target is communicating over NFS. That way I can make a change on my local system, save the application @ /exports, and run the altered... (4 Replies)
Discussion started by: Circuits
4 Replies
LEARN ABOUT REDHAT
longjmp
LONGJMP(3) Library functions LONGJMP(3)
NAME
longjmp, siglongjmp - non-local jump to a saved stack context
SYNOPSIS
#include <setjmp.h>
void longjmp(jmp_buf env, int val);
void siglongjmp(sigjmp_buf env, int val);
DESCRIPTION
longjmp() and setjmp() are useful for dealing with errors and interrupts encountered in a low-level subroutine of a program. longjmp()
restores the environment saved by the last call of setjmp() with the corresponding env argument. After longjmp() is completed, program
execution continues as if the corresponding call of setjmp() had just returned the value val. longjmp() cannot cause 0 to be returned. If
longjmp is invoked with a second argument of 0, 1 will be returned instead.
siglongjmp() is similar to longjmp() except for the type of its env argument. If the sigsetjmp() call that set this env used a nonzero
savesigs flag, siglongjmp() also restores the set of blocked signals.
RETURN VALUE
These functions never return.
CONFORMING TO
POSIX
NOTES
POSIX does not specify whether longjmp will restore the signal context. If you want to save and restore signal masks, use siglongjmp.
longjmp() and siglongjmp() make programs hard to understand and maintain. If possible an alternative should be used.
SEE ALSO
setjmp(3), sigsetjmp(3)
1997-03-02 LONGJMP(3)