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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.