Re: Conditional Breakpoints with Pointers
Philippe Waroquiers <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <1430776102.2159.2.camel@soleil> |
On Mon, 2015-05-04 at 21:12 +0000, Chun, Eric Y wrote:
> in gdb, how do i set a conditional breakpoint depending on value of pointer keeping in mind that i have to check if pointer is null before dereferencing pointer?
>
> here is an example of code i'm trying to debug:
> #include <iostream>
> using namespace std;
>
> int main () {
> int *i[10];
> int *j = NULL;
> int k;
>
> i[4] = new int;
> *i[4] = 8;
>
> for (k=0; k < 10; k++) {
> j = i[k];
> }
>
> return 0;
> }
>
> i set conditional breakpoint at line "j=i[k]" but i got a seg fault:
> (gdb) b 14 if j && *j == 8
> (gdb) r
> Starting program: /nfs/blahblah/a.out
> Failed to read a valid object file image from memory.
> Program received signal SIGSEGV, Segmentation fault.
>
> does anybody know why there is a segfault?
You only initialises i[4].
So, the rest of i array has random values pointing to nowhere, they
are not necessarily NULL.
Use valgrind to search such errors, not gdb :).
Philippe