gdb optimized out错误解决

本文介绍了在使用Linux GDB进行调试时遇到变量值被优化掉的问题及解决方案。当使用如-O2等优化选项编译时,可能会导致GDB无法正确显示变量值。解决办法是关闭编译优化选项,改为使用-O0,这样可以避免源代码行误导问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

when linux gdb debug, print a variable, such as i,  by command p i;

 

The gdb output  value optimized out.

 

The solution for the problem is off the compile optimation option -Ox,  x note digital, such 2, 3, 4 etc


The better way is that changing -Ox to -O0.

The -O0 denotes there is no optimization. It will avoid gdb mislead source code line issue.

gdb Segmentation Program terminated with signal SIGSEGV, Segmentation fault. #0 __strlen_isr () at /builds/workspace/700-SDP/build_aarch64/lib/c/string/aarch64/strlen.S:147 147 /builds/workspace/700-SDP/build_aarch64/lib/c/string/aarch64/strlen.S: 没有那个文件或目录. [Current thread is 3 (pid 503866 tid 3)] (gdb) where #0 __strlen_isr () at /builds/workspace/700-SDP/build_aarch64/lib/c/string/aarch64/strlen.S:147 #1 0x000000031f946200 in _Putfld (px=px@entry=0x22b110fb70, pap=pap@entry=0x22b110fb30, code=<optimized out>, ac=ac@entry=0x22b110fbd0 "0\374\020\261\"") at /builds/workspace/700-SDP/build_aarch64/lib/c/stdio/xputfld.c:194 #2 0x000000031f9485b0 in _Printf (pfn=pfn@entry=0x31f93f778 <prout>, arg=arg@entry=0x22b110fc78, fmt=0x12c8260725 <error: Cannot access memory at address 0x12c8260725>, ap_arg=..., secure=secure@entry=0) at /builds/workspace/700-SDP/build_aarch64/lib/c/stdio/xprintf.c:121 #3 0x000000031f93f818 in vsnprintf (s=<optimized out>, size=<optimized out>, fmt=<optimized out>, ap=...) at /builds/workspace/700-SDP/build_aarch64/lib/c/stdio/vsnprint.c:48 #4 0x000000031f942884 in __vsnprintf_chk (s=<optimized out>, size=<optimized out>, flag=<optimized out>, osize=<optimized out>, fmt=<optimized out>, ap=<error reading variable: Cannot access memory at address 0x12c8260724>) at /builds/workspace/700-SDP/build_aarch64/lib/c/stdio/vsnprint_chk.c:27 #5 0x000000031fbd0ec4 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) fault
最新发布
06-27
(gdb) bt #0 0x0000725215894a24 in pthread_mutex_lock () from /lib64/libpthread.so.0 #1 0x000072521831bb19 in fspr_thread_mutex_lock (mutex=<optimized out>) at locks/unix/thread_mutex.c:92 #2 0x0000725217f9d795 in switch_mutex_lock (lock=<optimized out>) at src/switch_apr.c:301 #3 0x0000725188977cec in conference_floor_control_state_set (conference=conference@entry=0x7250f0066538, new_state=new_state@entry=SWITCH_FLOOR_STATE_IDLE, revoke_cause=revoke_cause@entry=0) at mod_conference.c:9751 #4 0x0000725188978ea6 in conference_member_floor_control_deinit (member=member@entry=0x7251180dfa90) at mod_conference.c:10964 #5 0x00007251889a16a8 in conference_member_del (conference=0x7250f0066538, member=member@entry=0x7251180dfa90) at conference_member.c:1208 #6 0x000072518897554e in conference_function (session=<optimized out>, data=<optimized out>) at mod_conference.c:7058 #7 0x0000725217fd40ef in switch_core_session_exec (session=session@entry=0x72520c01b2f8, application_interface=application_interface@entry=0x13e7d1e8, arg=arg@entry=0x7250f0025eb0 "$1@ultrawideband") at src/switch_core_session.c:2965 #8 0x0000725217fd488f in switch_core_session_execute_application_get_flags (session=session@entry=0x72520c01b2f8, app=0x7250f0025ea0 "conference", arg=0x7250f0025eb0 "$1@ultrawideband", flags=flags@entry=0x0) at src/switch_core_session.c:2825 #9 0x0000725217fd8bf2 in switch_core_standard_on_execute (session=0x72520c01b2f8) at src/switch_core_state_machine.c:350 #10 switch_core_session_run (session=0x72520c01b2f8) at src/switch_core_state_machine.c:647 #11 0x0000725217fd1a6e in switch_core_session_thread (thread=<optimized out>, obj=0x72520c01b2f8) at src/switch_core_session.c:1727 #12 0x0000725217fcd15b in switch_core_session_thread_pool_worker (thread=0x72520c0455b0, obj=<optimized out>) at src/switch_core_session.c:1791 #13 0x0000725218321a3c in dummy_worker (opaque=0x72520c0455b0) at threadproc/unix/thread.c:151 #14 0x000072521589217a in start_thread () from /lib64/libpthread.so.0 #15 0x0000725214e44dc3 in clone () from /lib64/libc.so.6 (gdb) f 2 #2 0x0000725217f9d795 in switch_mutex_lock (lock=<optimized out>) at src/switch_apr.c:301 301 return fspr_thread_mutex_lock(lock); (gdb) p lock $1 = <optimized out>
06-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值