Debugger stops at unexpected place when using `trace call`

Open
#897 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
38/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
rails, ruby
Domain
devtools

Research direction

Reproduce with the listed Ruby 3.1.0 and rdbg 1.7.1 steps using the testapp, then follow the trace call entry point and breakpoint at line 9 in app/controllers/students_controller.rb. Confirm the debugger stops at line 9 rather than line 7 after continuing; the issue has no named debugger source file or test.

Written by the indexing model from the issue text.

Description

bug

Your environment

  • ruby -v:
  • ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin21]
  • rdbg -v:
  • rdbg 1.7.1

To Reproduce

  1. Clone https://github.com/ono-max/testapp
  2. bundle install
  3. rails db:create
  4. rails db:migrate
  5. bin/rails s
$ bin/rails s
=> Booting Puma
=> Rails 7.0.4.2 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.0.3-p157) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 28208
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop
  1. Go to localhost:3000, then it should stop as follows:
...
Use Ctrl-C to stop
Started GET "/" for ::1 at 2023-02-14 01:57:49 +0900
  ActiveRecord::SchemaMigration Pluck (0.1ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by StudentsController#index as HTML
[1, 10] in ~/workspace/testapp/app/controllers/students_controller.rb
     1| class StudentsController < ApplicationController
     2|   before_action :set_student, only: %i[ show edit update destroy ]
     3|
     4|   # GET /students or /students.json
     5|   def index
=>   6|     binding.break
     7|     student1 = Student.first
     8|     student2 = Student.last
     9|   end
    10|
=>#0	StudentsController#index at ~/workspace/testapp/app/controllers/students_controller.rb:6
  #1	ActionController::BasicImplicitRender#send_action(method="index", args=[]) at ~/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.4.2/lib/action_controller/metal/basic_implicit_render.rb:6
  # and 75 frames (use `bt' command for all frames)
  1. "trace call"
  2. Set a breakpoint at line 9
  3. Then continue.
  4. Stop at line 7
...
[2, 11] in ~/workspace/testapp/app/controllers/students_controller.rb
     2|   before_action :set_student, only: %i[ show edit update destroy ]
     3|
     4|   # GET /students or /students.json
     5|   def index
     6|     binding.break
=>   7|     student1 = Student.first
     8|     student2 = Student.last
     9|   end
    10|
    11|   # GET /students/1 or /students/1.json
=>#0	StudentsController#index at ~/workspace/testapp/app/controllers/students_controller.rb:7 #=> nil
  #1	ActionController::BasicImplicitRender#send_action(method="index", args=[]) at ~/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.4.2/lib/action_controller/metal/basic_implicit_render.rb:6
  # and 75 frames (use `bt' command for all frames)
...

Expected behavior
It should stop at line 9.

Additional context
Add any other context about the problem here.

Dominant language
Ruby
Stars
1.3k
Forks
146
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ruby/debug

All issues in ruby/debug

Similar issues

More Ruby issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.