Использование флага gprof -pg не генерирует gmon.outLinux

Ответить
Anonymous
 Использование флага gprof -pg не генерирует gmon.out

Сообщение Anonymous »

У меня есть код, представляющий собой смесь Fortran, C и R. это код моделирования. Бэкэнд/решатель находится на Fortran, а C и R используется в качестве оболочки для созданного рабочего процесса моделирования и запуска процесса.
Я хотел бы выполнить некоторое профилирование с помощью gprof поэтому я добавил соответствующие флаги в свои make-файлы. Вот структура каталогов:
Предположим, мой код находится по следующему пути

Код: Выделить всё

/home/myusername/DEV/simcode/src
Родительский make-файл находится в src. У меня есть следующие суб-make-файлы.

Код: Выделить всё

Global/fortran/Makefile
TS/c/Makefile
TS/fortran/ReadModelData/Makefile
TS/fortran/RunSim/Makefile
Поэтому я изменил все свои дополнительные файлы make-файлов следующим образом:

Код: Выделить всё

FC=gfortran
LD=gfortran
OPT=-O2
DBG=-g
PROF= -pg
ifdef SYSTEMROOT
# Windows OS
SIM_GLOBAL = libCodeGlobal.dll
FFLAGS = $(OPT) $(DBG) -cpp -fno-underscoring $(PROF)
LDFLAGS = $(OPT) $(DBG) $(PROF)
else
ifeq ($(shell uname),Linux)
# GNU/Linux OS
SIM_GLOBAL = libCodeGlobal.so
FFLAGS = $(OPT) $(DBG) -cpp -fPIC -fno-underscoring $(PROF)
LDFLAGS = $(OPT) $(DBG) $(PROF)
else
# Mac OSX
SIM_GLOBAL = libCodeGlobal.dylib
FFLAGS = $(OPT) $(DBG) -cpp -fno-underscoring $(PROF)
LDFLAGS = $(OPT) $(DBG) $(PROF)
endif
endif
Я изменил все файлы Makefile одинаково, поскольку они практически одинаковы. Я бежал

Код: Выделить всё

make clean
make all
В

Код: Выделить всё

/home/myusername/DEV/simcode/src
Где находится мой родительский Makefile. Потом я побежал

Код: Выделить всё

R CMD INSTALL .
Вот как я устанавливаю свой код: мой код устанавливается по такому пути, как

Код: Выделить всё

/home/h68583/R/x86_64-pc-linux-gnu-library/4.0/MYCODE
где находятся мои файлы *so.
Затем просто открыл сеанс R, набрав R > в терминале и загружаю в него свой код

Код: Выделить всё

library(MYCODE)
Затем запускаем тестовый пример моделирования

Код: Выделить всё

source("path to the test case file which is an `R` script")
Исходя из того, что я понял, этот процесс должен создать файл с именем gmon.out, который можно использовать для анализа производительности с помощью gprof, но я не знаю не получаю файл gmon.out.
Я проверил установку gprof, и он установлен, я также запустил простой тестовый пример, чтобы проверить, создает ли он файл gprof и это правильно сделало, так что проблема должна быть связана с моим кодом моделирования и, возможно, с моими make-файлами.
Любая помощь будет оценена по достоинству. Что касается моей операционной системы, я работаю над Linux, если это поможет.

Подробнее здесь: https://stackoverflow.com/questions/786 ... e-gmon-out
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»