| 973 | } |
| 974 | |
| 975 | SourceLocation Probe::objectCreationSourceLocation(const QObject *object) |
| 976 | { |
| 977 | QObject *key = const_cast<QObject *>(object); |
| 978 | if (!s_listener()->constructionBacktracesForObjects.contains(key)) { |
| 979 | IF_DEBUG(std::cout << "No backtrace for object available" << object << "." << std::endl;) |
| 980 | return SourceLocation(); |
| 981 | } |
| 982 | |
| 983 | const auto &st = s_listener()->constructionBacktracesForObjects.value(key); |
| 984 | int distanceToQObject = 0; |
| 985 | |
| 986 | const QMetaObject *metaObject = object->metaObject(); |
| 987 | while (metaObject && metaObject != &QObject::staticMetaObject) { |
| 988 | distanceToQObject++; |
| 989 | metaObject = metaObject->superClass(); |
| 990 | } |
| 991 | |
| 992 | const auto frame = Execution::resolveOne(st, distanceToQObject + 1); |
| 993 | return frame.location; |
| 994 | } |
| 995 | |
| 996 | Execution::Trace Probe::objectCreationStackTrace(QObject *object) |
| 997 | { |