Hi,

This looks like
https://code.google.com/p/address-sanitizer/issues/detail?id=235. Recently
(but, I guess, after llvm-3.4.1) there were improvements in debug
information for local variables in ASan builds. Can you try tip-of-trunk
Clang on that example?


On Tue, Jul 15, 2014 at 6:41 PM, Shiny Teng <[email protected]> wrote:

> Hi experts,
> I'm using llvm3.4.1 on OSX 10.9.3.
> My codes,
>
> // longstack.cc
> int* a;
> void foo(int n)
> {
>     a[n]++;
>     foo(++n);
> }
> int main(int argc, char** argv) {
>     a = new int[30];
>     foo(0);
> }
>
> Build:
> /usr/local/Cellar/llvm34/3.4.1_1/bin/clang++-3.4 -O0 -g -fsanitize=address
> longstack.cc -o ./longstack
>
> Debug:
> (lldb) target create ~/Test\ Projects/clang/longstack
> Current executable set to '~/Test Projects/clang/longstack' (x86_64).
> (lldb) run --stop-at-entry
> Process 65604 launched: '/Users/tengxiang/Test Projects/clang/longstack'
> (x86_64)
> Process 65604 stopped
> * thread #1: tid = 0xa5879, 0x00007fff5fc01028 dyld`_dyld_start, stop
> reason = exec
> frame #0: 0x00007fff5fc01028 dyld`_dyld_start
> dyld`_dyld_start:
> -> 0x7fff5fc01028: popq %rdi
> 0x7fff5fc01029: pushq $0
> 0x7fff5fc0102b: movq %rsp, %rbp
> 0x7fff5fc0102e: andq $-16, %rsp
> (lldb) b foo
> Breakpoint 1: where = longstack`foo(int) + 291 at longstack.cc:5, address
> = 0x0000000100000ab3
> (lldb) c
> Process 65604 resuming
> Process 65604 stopped
> * thread #1: tid = 0xa5879, 0x0000000100000ab3
> longstack`foo(n=<unavailable>) + 291 at longstack.cc:5, queue =
> 'com.apple.main-thread, stop reason = breakpoint 1.1
> frame #0: 0x0000000100000ab3 longstack`foo(n=<unavailable>) + 291 at
> longstack.cc:5
> 2
> 3 void foo(int n)
> 4 {
> -> 5 a[n]++;
> 6 foo(++n);
> 7 }
> 8
> (lldb) p n
> error: Couldn't materialize struct: size of variable n disagrees with the
> ValueObject's size
> Errored out in Execute, couldn't PrepareToExecuteJITExpression
>
> See I can't print variable's value. And bt won't show parameters' value,
> looks like
> frame #0: 0x0000000100000ab3 longstack`foo(n=<unavailable>) + 291 at
> longstack.cc:5
>
> And then I tried remove -fsanitize=address, like
> /usr/local/Cellar/llvm34/3.4.1_1/bin/clang++-3.4 -O0 -g longstack.cc -o
> ./longstack
>
> It prints in lldb,
> (lldb) p n
> (int) $0 = 258504
>
> Did I miss anything? Or is there a way to print variables in asan-ified
> executables in debugging?
>
> Regards,
> -xiang
>
> --
> You received this message because you are subscribed to the Google Groups
> "address-sanitizer" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Alexey Samsonov, Mountain View, CA

-- 
You received this message because you are subscribed to the Google Groups 
"address-sanitizer" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to