gdb问题

调试程序时,在gdb内p var,会提示

No symbol "var" in current context.

即使没有使用任何编译优化选项,仍然不能查看,放狗搜了一下,可能是这些变量被优化到寄存器中,gdb无法读取。

解决方案:

在编译是加入 ‘-gstabs+’  选项,比如:

g++ -g -Wall  -gstabs+ -o main.o main.cpp

gdb main,就可以查看局部变量了。

时间: 2024-08-07 03:12:28

gdb问题的相关文章

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

gdb调试

[前言]使用gdb调试前,在编译程序时,要加 -g 选项,否则你将看不见程序的函数名.变量名,所代替的全是运行时的内存地址. 1.开始调试 a.  gdb <program> program也就是你的执行文件,一般在当前目录下. b. gdb <program> core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件. 2.[列出源码],从第n行开始(编译时要加 -g 选项) l n 3.[设置断点]在第N行加断点 break

gdb调试命令

本篇摘自互联网,纯属自己学习笔记,然分享给看到我的博客的人们. 用GDB调试程序 GDB是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能. 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能.而Windows下的图形软件基本上是各自为营,

Go语言gdb调试踩坑

整个是一个docker环境 docker版本: 1.12.1,镜像是我自己做的基于ubuntu:14.04.05. 容器操作系统版本: Ubuntu 14.04.5 LTS go版本: 1.6.3 在gdb中执行run命令出错! 错误输出: warning:Error disabling address space randomization: Operation not permitted 环境:docker 解决办法: warning:Error disabling address spac

GDB踪函数的完整调用过程 及原理

http://www.lenky.info/archives/2013/02/2202 Breakpoint 1, 0x0000003c4e417410 in open64 () from /lib64/ld-linux-x86-64.so.2 (gdb) bt #0 0x0000003c4e417410 in open64 () from /lib64/ld-linux-x86-64.so.2 #1 0x0000003c4e40f789 in _dl_sysdep_read_whole_fil

Linux GDB程序调试工具使用简介

GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓"寸有所长,尺有所短"就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) 当程序被停住时,

makefile gdb ps

GDB 1.调试core ulimit -c ulimited 产生段错误,目录下有core文件, gdb a.out core 2.ps常用命令http://linux.cn/article-4743-1.html pstree,ps -aux,查看线程ps -eLf 调试线程,gdb中info thread thread 9

gdb常用

调试信息条件:-g或-gdbgcc -g -o test  test.cgcc -ggdb3 -o test test.cggdb3告诉gcc,使用gdb的扩展产生调试符号.其中“3”表示使用的是第三级(最高级)调试信息.------------------------------------------------------------------------------ulimit -c unlimited再次运行可执行文件,产生core文件 gdb test core加载test和cor

VELT-0.1.5开发: gdb串口调试内核时信息丢失的问题

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs2013 + velt-0.1.5 VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可

gdb调用程序崩溃时的内存镜像core文件

/* * gcc gdb_test.c -o gdb_test -g * ./gdb_test * Segmentation fault (core dumped) * gdb gdb_test -c core.5521 * Core was generated by `gdb_test'. * Program terminated with signal 11, Segmentation fault. * #0 0x000000000040048b in main (argc=1, argv=