小编bri*_*lcd的帖子

Ada声明遇到问题"0范围18..20"

我在使用这个变量声明时遇到了麻烦:

Code_Length at 0 range 18..20;
Run Code Online (Sandbox Code Playgroud)

我熟悉约束,但这at 0是给我适合的东西,我在其他地方找不到任何在线工作示例.

如果我不得不猜测(我完全猜测),at 0将值初始化为0,则在任何后续赋值操作上强制执行约束.但我找不到任何要验证的东西.

ada variable-assignment variable-declaration

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

在使用gdb来调试带有Ada库的C++代码时遇到了困难

由于各种原因,我无法详细说明,但这里是我正在使用的基本架构

  • 我有一个C++框架,它使用我构建的C++目标文件来执行动态模拟.
  • C++库调用了一个用Ada编写的共享(.so)库.

据我所知,Ada库(它是一个非常重要的代码集合)在边缘情况下产生异常,但是我在隔离产生异常的函数时遇到了麻烦.

这是我正在使用的:

  • CentOS 4.8(最终版)
  • gcc 3.4.6(w/gnat)
  • gdb 6.3.0.0-1.162.el4rh

这是我在正常执行下得到的错误:

terminate called without an active exception
raised PROGRAM_ERROR : unhandled signal
Run Code Online (Sandbox Code Playgroud)

我可以让gdb在返回到C++时立即捕获异常,但是我无法让它抓住Ada代码.我已确保编译所有内容-g,但这似乎没有帮助解决问题.

当我试图捕捉/打破信号/异常gdb(礼貌告诉我Catch of signal not yet implemented)时,我明白了:

[Thread debugging using libthread_db enabled]
[New thread -1208371520 (LWP 14568)]
terminate called without an active exception
Program received signal SIGABRT, Aborted.
[Switching to thread -1208371520 (LWP 14568)]
0x001327a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
Run Code Online (Sandbox Code Playgroud)

我相信这terminate called [...]条线来自框架.当我尝试捕获那个中断,然后运行一个backtrace(bt),我得到这样的东西:

#0  0x001327a2 in gdb …
Run Code Online (Sandbox Code Playgroud)

c++ linux gcc gdb ada

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

标签 统计

ada ×2

c++ ×1

gcc ×1

gdb ×1

linux ×1

variable-assignment ×1

variable-declaration ×1