GDB:在没有名称的情况下获取参数值?

时间:2018-11-16 22:48:08

标签: c++ gdb

我正在使用GDB调试应用程序,当我进入框架时,会看到以下内容:

#2  0x00007fff4da4276b in MHWRender::THgeometryOverrideEvaluator::doDGBoundingBox(TdgContext const&, OGSMayaCompoundNode*) ()

通常,我只是打印出参数地址,但是在这里第二个参数的情况下,没有参数名称。如何获取所需的信息?

1 个答案:

答案 0 :(得分:1)

  

如何获取所需的信息?

您得到的输出表明没有调试信息的情况下正在编译代码。

最简单的解决方法是根据需要添加<?php use Carbon\Carbon; use Carbon\CarbonPeriod; use Carbon\CarbonInterval; class PeriodInterval { public function hoursIn() { /** * Time Periods */ $periods = [ 'day' => [ '08:00:00', '18:00:00' ], 'night' => [ '18:00:00', '08:00:00' ], 'lunch' => [ '11:00:00', '14:00:00' ] ]; /** * Time Intervals */ $intervals = [ 'parking' => [ 'John Doe' => [ Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 07:00:00'), Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 09:00:00') ], 'Jane Doe' => [ Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 08:00:00'), Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 09:00:00') ], 'John Hope' => [ Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 11:00:00'), Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 13:00:00') ], 'Jane Hope' => [ Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 18:00:00'), Carbon::createFromFormat('Y-m-d H:i:s', '2018-12-10 19:00:00') ] ] ]; /** * Hours for Interval in Period */ function hoursForIntervalInPeriod(array $period, array $interval) { $Period = new CarbonPeriod(array_shift($interval)->toDateTimeString(), '1 hour', array_pop($interval)->toDateTimeString()); return $Period->filter(function($date) use ($period) { $period_starts = Carbon::createFromFormat('Y-m-d H:i:s', $date->format('Y-m-d') . ' ' . array_shift($period)); $period_ends = Carbon::createFromFormat('Y-m-d H:i:s', $date->format('Y-m-d') . ' ' . array_pop($period)); // Normal Period if ($period_starts < $period_ends) { return ($date >= $period_starts && $date < $period_ends); } // Inverted Period (Overnight) if ($period_starts > $period_ends) { return ($date >= $period_starts || $date < $period_ends); } return false; })->count(); } /** * Map Everything */ $hours = array_map(function($interval, $interval_key) use ($periods) { return array_map(function ($period, $period_key) use ($interval, $interval_key) { return [ $interval_key . ucfirst($period_key) => array_map(function($interval_item, $interval_item_key) use ($period) { /** * Calculate Total Hours */ $total_hours = hoursForIntervalInPeriod($period, $interval_item); return [ $interval_item_key => $total_hours ]; }, $interval, array_keys($interval)) ]; }, $periods, array_keys($periods)); }, $intervals, array_keys($intervals)); return $hours; } } 并重建您的应用程序。

没有调试信息,您只能在程序集级别进行调试,这需要了解平台上的调用约定(未指定)。

假设这是-g上的Linux,并且假设x86_64不是doDGBoundingBox函数,则第一个(static)参数将在{{1}中传递},在this中排名第二($rdi),在TdgContext&中排名第三($rsi)。 Reference