This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Conditional Breakpoints with Pointers


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]