相关疑难解决方法(0)

如何在GDB中查看像数组一样的指针?

假设已定义:int a[100] 类型print a然后gdb将自动将其显示为数组:1, 2, 3, 4....但是,如果a作为参数传递给函数,那么gdb会将其视为普通的int指针,类型print a将显示:(int *)0x7fffffffdaa0.如果我想查看a数组,该怎么办?

c gdb

38
推荐指数
4
解决办法
3万
查看次数

如何在 gdb 脚本中编写循环?

在调整了这个答案之后,我编写了以下循环来简单地在名为“gdb_script.gs”的脚本中在 gdb 中打印一个数组。我究竟做错了什么?

set $end=64  
while ($i<$end)
   print $i
   print volfrac($i, :, 1)
   set $i=$i+1
end
Run Code Online (Sandbox Code Playgroud)

其中 volfrac(:,:,:) 是一个 Fortran 数组。我收到错误:

 gdb_script.gs:14: Error in sourced command file:
 A syntax error in expression, near `<$end)'.
Run Code Online (Sandbox Code Playgroud)

gdb

10
推荐指数
1
解决办法
1万
查看次数

为什么我不能在gdb中打印出环境变量?

#include <unistd.h>
#include <stdio.h>

extern char **environ;
int main(int argc, char *argv[]) { 
  int i = 0;
  while(environ[i]) {
    printf("%s\n", environ[i++]);
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

(gdb) n
8       printf("%s\n", environ[i++]);
(gdb) p environ[i]
Cannot access memory at address 0x0
(gdb) n
LOGNAME=root
7     while(environ[i]) {
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,printf可以打印出来environ[i],但是p environ[i]给了我Cannot access memory at address 0x0,为什么?

c linux gdb environment-variables

8
推荐指数
2
解决办法
6286
查看次数

如何在程序完成之前循环GDB脚本?

define traverse
    while(CONDITION)
        if $start == 0
            set $start = 1
            print_node
            print_rss_item
        else
            continue
            print_node
            print_rss_item
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

如果程序完成,我需要什么条件来停止循环?

macros gdb loops while-loop

8
推荐指数
2
解决办法
2万
查看次数

GDB中的格式化打印

我想做printf风格打印GDB.例如,我想打印一个变量值,但用一些文字来描述它是什么.可以这样做,如果是的话,你能举个例子吗?

c gdb

5
推荐指数
2
解决办法
5475
查看次数

标签 统计

gdb ×5

c ×3

environment-variables ×1

linux ×1

loops ×1

macros ×1

while-loop ×1