Как точки останова отладчика реализованы эффективно?

Вы можете написать небольшую функцию, которая будет принимать данные и количество нужных вам столбцов. По умолчанию всего 4 столбца

reshaping = function(dat, cols = 4){
  n = nrow(dat)
  m = ceiling(n/cols)
  time=rep(1:cols, each = m, len = n)
  id = rep(1:m, times = cols, len = n)
  reshape(cbind(id, time, dat), idvar = 'id', dir='wide')[-1]
}

reshaping(dat)
  scores.1  points.1 scores.2 points.2 scores.3 points.3 scores.4  points.4
1      328  1.449766      337 16.40224      346 43.67366      355  81.52636
2      329  2.398506      338 18.86847      347 47.37787      356  86.34135
3      330  3.544324      339 21.48127      348 51.21057      357  91.27426
4      331  4.876414      340 24.23793      349 55.17032      358  96.32417
5      332  6.386419      341 27.13600      350 59.25580      359 101.49017
6      333  8.067581      342 30.17321      351 63.46572      360 106.77140
7      334  9.914259      343 33.34746      352 67.79887       NA        NA
8      335 11.921636      344 36.65681      353 72.25409       NA        NA
9      336 14.085526      345 40.09944      354 76.83027       NA        NA

reshaping(dat,8)
  scores.1 points.1 scores.2  points.2 scores.3 points.3 scores.4 points.4 scores.5 points.5 scores.6 points.6 scores.7  points.7
1      328 1.449766      333  8.067581      338 18.86847      343 33.34746      348 51.21057      353 72.25409      358  96.32417
2      329 2.398506      334  9.914259      339 21.48127      344 36.65681      349 55.17032      354 76.83027      359 101.49017
3      330 3.544324      335 11.921636      340 24.23793      345 40.09944      350 59.25580      355 81.52636      360 106.77140
4      331 4.876414      336 14.085526      341 27.13600      346 43.67366      351 63.46572      356 86.34135       NA        NA
5      332 6.386419      337 16.402235      342 30.17321      347 47.37787      352 67.79887      357 91.27426       NA        NA
5
задан skiphoppy 13 May 2009 в 16:37
поделиться

3 ответа

Стратегия используется во многих отладчиках (я не я не знаю об Eclipse) заключается в том, чтобы вставить патч в код в точке останова, которая по сути является вызовом подпрограммы или системным вызовом. Код, к которому был осуществлен переход, имеет информацию о точке останова и выполняет любую печать или прием пользовательских команд, а также имеет код, который был перезаписан патчем, так что код может быть выполнен, чтобы выполнение соответствовало исходному коду, без точки останова

7
ответ дан 18 December 2019 в 13:19
поделиться

Отладчики реализуют точки останова аппаратно или программно. Последнее требует сохранения исходной инструкции, вставки специального кода, который генерирует исключение, и, когда исключение возникает, повторной вставки исходной инструкции и сообщения пользователю о том, что точка останова была достигнута. Прочтите мою статью , чтобы узнать подробности о программных точках останова.

2
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: